我一直在 .net 4 工作,非常享受从单一方法返回定制函数的能力,例如:
public Func<object, object> FunctionBuilder(object o)
{ /*build functions, woo*/ }
...然而,这在 .net2 中似乎非常困难,如果不是不可能的话,因为 Func
出现在 .net3.5(?) 中,例如:
public delegate<object> FunctionBuilder(object o)
{ /*nope*/ }
...不是有效语法...
是否有可能从 .net2 中的方法返回定制函数?
最佳答案
Is it even possible to return bespoke functions from a method within .net2?
当然可以,但是您需要返回特定的委托(delegate)类型。
最简单的事情可能是声明您自己的通用委托(delegate),例如
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)并且运行良好。
关于c# - 使用 .net2 返回委托(delegate)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16189888/