0

いくつかのWebサービスをラップするPowerShellモジュールがあります。Webサービスは複雑なPlainOldDot Net Objects(PODO)を使用、コマンドレットパラメーターとNew-Object MyPODO -Property $ MyHashTableのようにHashTablesを使用して、ハッシュテーブルをリクエストオブジェクトに変換しています。

function Get-Stuff ([HashTable]$WhatStuff) {
    $service = New-ServiceProxy . . . .
    $request = New-Object GetStuffRequest -Property $WhatStuff;
    return $service.GetStuff($request);
    $response;
}

ただし、次のように、応答オブジェクトが直接要求オブジェクトになることができるコマンドレットがある場合があります。

function Find-Stuff ([HashTable]$KindaStuff) {
    $service = New-ServiceProxy . . . .
    $request = New-Object GetStuffRequest -Property $KindaStuff;
    return $service.SearchStuff($request);
}

$ WhatStuffパラメーターを装飾して、特定のタイプのHashTableまたはPODOのいずれかを受け入れる方法はありますか?

4

2 に答える 2

1

James Tryandがツイートでこの回答をくれました。

答えはParameter Setsを使用することです。

1 つのパラメーター セットでは HashTable 型のパラメーターを受け入れ、もう 1 つのパラメーター セットでは PODO 型を受け入れます。

于 2011-09-16T08:25:08.147 に答える
0

使い方によっては、次のようになります。

function Get-Stuff ($WhatStuff) {

    if(($WhatStuff -isnot [HashTable]) -or ($WhatStuff -isnot [PODOType])){ throw "expect it to be Hashtable or object of type"}

...
}
于 2011-09-15T16:16:06.890 に答える