我有一个试图从 Powershell 使用的类。这个类有一个方法,叫做Execute()
,有两个重载:一个接受 a Func<T>
,一个接受 a Action<T>
。我可以调用Action<T>
使用脚本块作为委托的重载,但我不知道如何调用采用 a 的重载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
如何调用需要 a 的重载Func<T>
?我认为这需要创建一个具有返回类型的 ScriptBlock,但我不知道该怎么做;Powershell 解析器显然不够聪明,无法自动执行此操作。