This article表示参数声明必须是脚本中第一个可执行的代码行。如何包含我声明的自定义类型的参数?
那么我该如何声明一个我创建的自定义类型的参数呢?
例如,我想创建一个脚本,像这样:
param
(
[MyCustomTypesNamespace.Cat] $myCat
)
如若Cat
类在同一个文件参数定义后声明?
或者我需要在单独的文件中定义Cat
类,并在这里引用该文件?
This article表示参数声明必须是脚本中第一个可执行的代码行。如何包含我声明的自定义类型的参数?
那么我该如何声明一个我创建的自定义类型的参数呢?
例如,我想创建一个脚本,像这样:
param
(
[MyCustomTypesNamespace.Cat] $myCat
)
如若Cat
类在同一个文件参数定义后声明?
或者我需要在单独的文件中定义Cat
类,并在这里引用该文件?
您需要先加载一个具有该类型的模块或配置文件。不过,我会建议使用函数声明。
Class Cat { Cat() {} }
Function Action
{
Param([Cat]$MyCat)
<# ... #>
}
$BlueCat = [Cat]::New()
Action $BlueCat
谢谢。调用'[Cat] :: New()'这样的ctor和调用'New-Object' cmdlet是否有区别? –
不,没有区别。我不认为v5以上的版本支持新的约定,但是([[Cat] :: New()')@ WaterCoolerv2 – TheIncorrigible1
谢谢。你是对的。在v5中添加了类,接口,多态等。 –
我不认为这会起作用,我不认为它需要。 PowerShell脚本通常是从PowerShell外部调用的,因此无论如何您都不能传递Cat对象。如果这只适用于PowerShell,那么最好使它成为一个模块,将代码放在一个函数中,并在模块加载时加载类型。 –