Powershell から使用しようとしているクラスがあります。このクラスには というメソッドがあり、Execute()
2 つのオーバーロードがあります。1 つは を受け取り、Func<T>
もう 1 つは を受け取りますAction<T>
。Action<T>
スクリプト ブロックをデリゲートとして使用するオーバーロードを呼び出すことはできますが、次のようなオーバーロードを呼び出す方法がわかりませんFunc<T>
。
add-type -TypeDefinition @'
using System;
public class DelegTest
{
public R Execute<R>(Func<R> method)
{
return method();
}
public void Execute(Action method)
{
Execute(() => { method(); return true; });
}
}
'@
$t = new-object DelegTest
$t.Execute({ 1 + 1 }) # returns nothing
を受け取るオーバーロードを呼び出すにはどうすればよいFunc<T>
ですか? これには、戻り値の型を持つ ScriptBlock を作成する必要があると思いますが、これを行う方法がわかりません。Powershell パーサーは、これを自動的に実行できるほどスマートではないようです。