2017-08-24 97 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中添加了類,接口,多態等。 –