c# - 使用 .net2 返回委托(delegate)的方法

标签 c# .net delegates .net-2.0 anonymous-delegates

我一直在 .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/

相关文章:

iphone - 选项卡栏 Controller :shouldSelectViewController: not being called when delegate is set

c# - Linq 仅查询每个唯一 ID 的前 N ​​行

c# - 如何在 ColdFusion 中使用 C#.NET 程序集?

c# - 参数可选与否,取决于之前的参数

c# - 使用屏蔽文本框来验证输入

c# - 幕后 Actor 是什么

C#::何时使用事件或从事件处理接口(interface)派生的对象集合?

ios - 委托(delegate)返回不正确的 ViewController 实例号

c# - 在具有动态参数的 MvcSiteMapProvider 中为 DynamicNode 创建子节点

c# - 为 Word 插件创建对话框