2013-04-24 19 views
1

我在.NET 4中得到工作,真的很喜歡從一個單一的方法,例如返回定製功能的能力返回代表:方法與.NET2

public Func<object, object> FunctionBuilder(object o) 
{ /*build functions, woo*/ } 

...但是這似乎如果很困難不是不可能的,因爲Func .NET2內做出現在.NET3.5之類的東西(?):

public delegate<object> FunctionBuilder(object o) 
{ /*nope*/ } 

...是不是有效的語法..

它甚至有可能返回定製的樂趣.net2中的方法提供的cations?

回答

7

是否有可能從.net2中的方法返回定製函數?

絕對,但你需要返回一個特定的委託類型。

最簡單的事情可能是聲明自己的通用委託,例如

public delegate TResult ProjectFunc<T, TResult>(T arg) 

然後:

public ProjectFunc<object, object> FunctionBuilder(object o) 

然後,如果/當你的項目轉移到.NET 3.5,你可以刪除ProjectFunc和使用Func代替。我們有taken this exact approach in Noda Time(現在實際上現在使用.NET 3.5),它的工作正常。

+0

這是完美的喬恩,非常感謝你。 – Izzy 2013-04-24 10:55:47

0

你應該使用這個構造。

delegate object MyDelegate(object); 

MyDelegate FunctionBuilder() 
{ 

}