2013-10-21 96 views
0

我需要在PowerShell中創建一個.NET對象。爲構造函數的簽名是:如何將PowerShell函數傳遞給採用Func <T1, T2>的.NET方法?

public ObjCTor(TClient param1, Func<TClient, IInterface> param2) 

和類定義爲:

public class ObjCTor<TClient> : IOtherInt1, IOtherInt2 where TClient : ConcreteBase 

的第一個參數是很容易的。我難住第二。我如何通過PowerShell功能Func<T1, T2>

修訂

回答

2

Jason提供的語法並不安靜。這工作:

$= New-Object "ObjCTor[TClient]" -ArgumentList $param1,$functionToCall 

我還缺少$args[0]在我的腳本塊/委託的參數。這是我應該有:

$functionToCall = { Get-Blah $args[0] } 
1

的PowerShell可以將腳本塊轉換成一個代表,所以這樣的事情可能會很好地工作:

$sb = { param($t1) $t1 } 
New-Object "ObjCTor[CClient, Func[CClient,IInterface]]" -ArgumentList $param1,$sb 

注意的PowerShell不能從腳本塊推斷泛型類型參數。在你的情況下,ObjCTor看起來像一個泛型類,所以類型演繹不是一個因素,但如果你調用一個泛型方法,事情可能會變得混亂。

+0

感謝您的答覆。您的建議語法不太正確,但修改後的版本(幾乎)可以正常工作:函數不能使用函數參數。 – Simon

相關問題