У меня есть функция следующим образом:
function T
{
Param
(
[switch] $IsValueNameRegularExpression
)
..
}
Обычно, чтобы определить, существует ли параметр, вы бы выполнили if ($Param)
, только видя, что это [switch]
, если функция вызывается как T -IsValueNameRegularExpression:$false
, возвращает false на if ($IsValueNameRegularExpression)
, хотя параметр существует - т.е. вызывающий вызывал значение для необязательного параметра.
Если я изменил тип параметра от [switch]
до [bool]
, то произойдет то же самое.
В коде для моей функции я вызываю некоторые методы .NET, которые содержат настройки по умолчанию для параметров [bool]
`[switch]`, поэтому, если пользователь не указал значение (будь то true или false), я не знаю, t хочет передать его методу .NET.
Я мог бы присваивать значения по умолчанию параметру, соответствующему значениям по умолчанию для метода .NET, но это предполагало бы, что значение по умолчанию метода .NET никогда не изменяется, что может быть неверным...
Итак, есть ли более элегантный способ сделать это?