Izz*_*zzy 1 .net c# delegates anonymous-delegates .net-2.0
我一直在.net 4工作,真的很享受从单一方法返回定制函数的能力,例如:
public Func<object, object> FunctionBuilder(object o)
{ /*build functions, woo*/ }
Run Code Online (Sandbox Code Playgroud)
...但是,如果不是不可能在.net2中执行,这似乎非常困难,因为Func出现在.net3.5(?)中,类似于:
public delegate<object> FunctionBuilder(object o)
{ /*nope*/ }
Run Code Online (Sandbox Code Playgroud)
...是无效的语法..
甚至可以从.net2中的方法返回定制函数吗?
甚至可以从.net2中的方法返回定制函数吗?
当然,但您需要返回特定的委托类型.
最简单的事情可能是声明自己的通用委托,例如
public delegate TResult ProjectFunc<T, TResult>(T arg)
Run Code Online (Sandbox Code Playgroud)
然后:
public ProjectFunc<object, object> FunctionBuilder(object o)
Run Code Online (Sandbox Code Playgroud)
然后,如果/当您的项目转移到.NET 3.5时,您可以删除ProjectFunc并使用Func.我们在Noda Time中采用了这种精确的方法(实际上现在使用的是.NET 3.5)并且它运行良好.