C#Func<&燃气轮机;图书馆代表
NET更高版本的通用Func和Action委托非常吸引人,许多地方已经证明,这些委托可以在针对.NET 2.0的代码中轻松地重新创建,例如 然而,从以.NET 2.0为目标的库的角度来看,针对任何更高版本的.NET构建的应用程序都可能会使用.NET 2.0,这是如何叠加的呢。在库中实现这个“兼容性层”绝对是一种冲突(无论是在私有接口还是公共接口方面),还是有办法使这项工作独立于消费应用程序构建所依据的目标框架 如果这是一个非初学者,是否最好: A) 用不同的名称定义一组相同的参数化委托?或C#Func<&燃气轮机;图书馆代表,c#,.net,delegates,compatibility,C#,.net,Delegates,Compatibility,NET更高版本的通用Func和Action委托非常吸引人,许多地方已经证明,这些委托可以在针对.NET 2.0的代码中轻松地重新创建,例如 然而,从以.NET 2.0为目标的库的角度来看,针对任何更高版本的.NET构建的应用程序都可能会使用.NET 2.0,这是如何叠加的呢。在库中实现这个“兼容性层”绝对是一种冲突(无论是在私有接口还是公共接口方面),还是有办法使这项工作独立于消费应用程序构建所依据的目标框架 如果这是一个非初学者,是否最好: A) 用不同的名称定义一组相同的参数化委托?或 B)
B) 严格遵守.NET 2.0约定,并根据需要定义新的委托类型?显而易见的事实是
Func
和Action
是一个好主意。它们使代码更易于阅读,并且避免了大量杂乱的样板委托声明这就是为什么要使用它们
因此,您需要使用这种非常吸引人的编程风格,它是一种标准技术,现在几乎普遍使用,而不是旧的方式,但是您不能使用它,因为您的目标是框架的遗留版本。你该怎么办
你有三个选择:
你必须根据自己的需要,选择适合自己情况的方法。对于每个人来说,没有一个正确的答案,只有取舍。如果您正在构建一个针对.NET 2.0的库,请尽可能使用框架中现有的委托。否则,请创建自己的代理,但在任何情况下都不要命名它们或创建“通用”代理,以镜像在.NET 3.0及更高版本中找到的代理。这只会导致混乱。兼容层是不必要的,因为兼容的代理可以相互转换。由于没有其他答案告诉我,我将假设这个问题没有聪明的解决方案。尽管这些权衡已经在我脑海中浮现,但这是一个合理的答案。