我有一个我试图从Powershell使用的课程。这个类有一个名为Execute()
的方法,有两个重载:一个带Func<T>
,另一个带Action<T>
。我可以使用scriptblock作为委托来调用带有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解析器显然不够智能,无法自动执行此操作。
答案 0 :(得分:4)
您需要自己将if
转换为正确的委托类型:
if ! lsof $f
find ...
fi