2011-05-11 39 views
2

我有這樣的代碼的方法....C#如何創建可調用委託給另一個通用方法

var x = inv.InvokeProxy<ServiceClient, AnotherType, ReturnType>(
    p => p.execute(input), guid); 

我所希望做的是所有上面的代碼封裝到一個委託包括指定的類型。

然後,我想要創建另一個方法,將字面上調用上述方法。像這樣的東西...

Func<a,b> func = delegate() 
{ 

.... 1st code sample inserted here ... 

} 

然後,我需要將func傳遞給另一個方法,將調用它,例如

protected TReturn InvokeDelegate<TReturn>(Func<> functionObject) 
{ 
    return functionObject.Invoke(); 
} 

有沒有人知道如何做到這一點?

+1

這不是真的清楚你的意思,因爲喜歡的東西'Func鍵<>'和'Func鍵' 。 「InvokeDelegate」有什麼意義 - 爲什麼調用者不能自己調用​​委託? – 2011-05-11 14:52:21

回答

2

這其實很簡單:

Func<TypeOfInput, Guid, TypeOfX> func = (input, guid) => 
        inv.InvokeProxy<ServiceClient, AnotherType, ReturnType>(
              p => p.execute(input), guid); 

執行這樣的:

TypeOfInput yourInput = ...; 
Guid yourGuid = ...; 
TypeOfX x = func(yourInput, yourGuid); 
相關問題