簡體   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