2

PowerShell で .NET オブジェクトを作成する必要があります。コンストラクターのシグネチャは次のとおりです。

public ObjCTor(TClient param1, Func<TClient, IInterface> param2)

クラスは次のように定義されます。

public class ObjCTor<TClient> : IOtherInt1, IOtherInt2 where TClient : ConcreteBase

最初のパラメータは簡単です。私は2番目に困惑しています。PowerShell 関数を として渡すにはどうすればよいFunc<T1, T2>ですか?

更新しました

4

2 に答える 2

2

PowerShell can convert a ScriptBlock to a delegate, so something like this might work fine:

$sb = { param($t1) $t1 }
New-Object "ObjCTor[CClient, Func[CClient,IInterface]]" -ArgumentList $param1,$sb

Note that PowerShell cannot deduce generic type arguments from a ScriptBlock. In your case, ObjCTor looks like a generic class so type deduction isn't a factor, but if you were calling a generic method, things could get messy.

于 2013-10-21T15:14:01.530 に答える
2

Jason によって提供された構文は、静かに正しくありませんでした。これは機能します:

$= New-Object "ObjCTor[TClient]" -ArgumentList $param1,$functionToCall

$args[0]また、スクリプトブロック/デリゲートのパラメーターとしてがありませんでした。これは私が持っていたはずのものです:

$functionToCall = { Get-Blah $args[0] }
于 2013-10-27T19:54:14.847 に答える