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