У меня есть следующие функции:Передача FromArgb() в качестве параметра функции
Function Color-Cells {
Param (
[Parameter(
Mandatory = $true,
Valuefrompipeline = $true)]
[String]$Range,
[Parameter(
Mandatory = $true)]
[System.Drawing.Color]$Color
)
$Global:WorkSheet.range($Range).Interior.color = $Color
}#End Function
Что я могу назвать так:
Color-Cells -Range "A1" -Color LightBlue
без каких-либо проблем.
Я хотел бы иметь возможность вызвать функцию следующим образом:
Color-Cells -Range "A1" -Color FromArgb(217,217,217)
, чтобы получить более детальный с выбором цвета клетки, однако, когда я делаю это, я получаю следующее сообщение об ошибке:
Color-Cells : Cannot process argument transformation on parameter 'Color'. Cannot convert value
"FromArgb(217,190,238)" to type "System.Drawing.Color". Error: "FromArgb(217 is not a valid value for Int32."
At line:70 char:32
+ Color-Cells -Range "A1" -Color "FromArgb(217,217,217)"
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Color-Cells], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Color-Cells
Я пытался вызвать функцию так:
"FromArgb(217,217,217)"
'FromArgb(217,217,217)'
`"FromArgb(217,217,217)`"
И все они производят ошибки. Я не очень хорошо знаком с .Net, поэтому не знаю, как это исправить. Моя конечная цель - создать функцию, которая может окрасить диапазон ячеек на основе либо известного имени или значения RGB [System.drawing.color]
.
Редактировать для ясности:
TypeName специфичен как тип параметра в функции. Когда я вызываю функцию Color-cells
, параметр -Color
является типом [System.Drawing.Color]
. Когда я вызываю функцию, используя статическое свойство (например, Color-Cells -Color LightBlue
), она работает только для поиска. Однако, когда я пытаюсь вызвать метод (например, Color-Cells -Color FromArgb(217,217,217)
), вот когда я получаю сообщение об ошибке. Есть ли способ передать только метод в функцию?
ответ Per Майка я могу успех полностью функция называется так:
Color-Cell -Range "A1" -Color $([System.Drawing.Color]::FromArgb(217,190,238))
Однако, я хотел бы, чтобы вызвать функцию (используя метод) без добавления $()
вокруг команды и без [System.Drawing.Color]::
как Я могу использовать только свойства (например, LightBlue).
мне пришлось завернуть его в '$()', чтобы держать ошибку прочь. Есть ли способ передать только «FromArgb (217,217,217)» в качестве параметра, не требуя '[system.drawing.color] ::' со статическим методом? Я могу сделать это со статическим свойством, но пока не нашел способ передать статический метод. – Nick
Я не знаю, как получить доступ к статическому члену (методу или свойству) без указания имени типа. –
Типичное имя специфично как тип параметра в функции. Когда я вызываю функцию «Цветные ячейки», переключатель '-Color' - это тип' [System.Drawing.Color] '. Когда я вызываю функцию с использованием статического свойства, она просто находит. Однако, когда я пытаюсь вызвать метод, я получаю сообщение об ошибке. Я собираюсь обновить вопрос, чтобы разобраться. – Nick