2017-08-24 98 views
0

This article表示参数声明必须是脚本中第一个可执行的代码行。如何包含我声明的自定义类型的参数?

那么我该如何声明一个我创建的自定义类型的参数呢?

例如,我想创建一个脚本,像这样:

param 
(
[MyCustomTypesNamespace.Cat] $myCat 
) 

如若Cat类在同一个文件参数定义后声明?

或者我需要在单独的文件中定义Cat类,并在这里引用该文件?

+0

我不认为这会起作用,我不认为它需要。 PowerShell脚本通常是从PowerShell外部调用的,因此无论如何您都不能传递Cat对象。如果这只适用于PowerShell,那么最好使它成为一个模块,将代码放在一个函数中,并在模块加载时加载类型。 –

回答

1

您需要先加载一个具有该类型的模块或配置文件。不过,我会建议使用函数声明。

Class Cat { Cat() {} } 

Function Action 
{ 
    Param([Cat]$MyCat) 
    <# ... #> 
} 

$BlueCat = [Cat]::New() 
Action $BlueCat 
+0

谢谢。调用'[Cat] :: New()'这样的ctor和调用'New-Object' cmdlet是否有区别? –

+0

不,没有区别。我不认为v5以上的版本支持新的约定,但是([[Cat] :: New()')@ WaterCoolerv2 – TheIncorrigible1

+0

谢谢。你是对的。在v5中添加了类,接口,多态等。 –