繁体   English   中英

如何将PowerShell函数传递给采用Func的.NET方法 <T1, T2> ?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM