[英]How can I pass a PowerShell function to a .NET method that takes a Func<T1, T2>?
我需要在PowerShell中创建一个.NET对象。 构造函数的签名是:
public ObjCTor(TClient param1, Func<TClient, IInterface> param2)
并且该类定义为:
public class ObjCTor<TClient> : IOtherInt1, IOtherInt2 where TClient : ConcreteBase
第一个参数很简单。 我被困在第二个。 如何将PowerShell函数作为Func<T1, T2>
传递?
更新
Jason提供的语法并不安静。 这有效:
$= New-Object "ObjCTor[TClient]" -ArgumentList $param1,$functionToCall
我也错过了$args[0]
作为我的scriptblock / delegate中的参数。 这就是我应该拥有的:
$functionToCall = { Get-Blah $args[0] }
PowerShell可以将ScriptBlock转换为委托,所以像这样的东西可能正常工作:
$sb = { param($t1) $t1 }
New-Object "ObjCTor[CClient, Func[CClient,IInterface]]" -ArgumentList $param1,$sb
请注意,PowerShell无法从ScriptBlock中推断出泛型类型参数。 在你的情况下,ObjCTor看起来像一个泛型类,所以类型推导不是一个因素,但如果你调用泛型方法,事情可能会变得混乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.