【问题标题】:What features of .NET 3.5 can be used in a .NET 2.0 application?.NET 3.5 的哪些功能可以在 .NET 2.0 应用程序中使用?
【发布时间】:2010-11-27 05:22:19
【问题描述】:

我有一个正在 Visual Studio 2008 中开发的应用程序,但项目设置为 .NET 2.0。该应用程序将在仅安装了 .NET 2.0 的机器上运行。

我知道我可以使用 .NET 3.5 c# 编译器的一些功能,并且它将我的代码编译为 .NET 2.0 运行时可以理解的 MSIL。

我可以在 .NET 2.0 应用程序中使用 .NET 3.5 的哪些功能?

编辑:我想到的是扩展方法、Linq、lambdas、对象初始化器、集合初始化器和其他编译器糖果。

【问题讨论】:

标签: c# .net-3.5 compiler-construction .net-2.0


【解决方案1】:

没有外部库你可以使用

  • Lambda 表达式
  • 对象初始化器
  • 集合初始化器
  • 扩展方法
  • 自动属性

借助 LINQBridge 等外部库,您还可以在内存中使用 LINQ 查询。

您不能使用的主要功能是表达式树,因为它们依赖于 CLR 中的修复,而这些修复在 vanilla 2.0 安装中不存在

【讨论】:

  • 您不能使用扩展方法,因为它们需要位于 System.Core.dll 中的 System.Runtime.CompilerServices.ExtensionAttribute
  • @rstevens,你需要具有适当命名空间的 ExtensionAttribute。但它不必在 System.Core.dll 中。它只需要定义它就可以工作(并且可以定义多次)。如果你定义了属性,你可以在 2.0 中使用扩展方法(C# 和 VB.Net 都是如此)
  • @JaredPar:如果我在另一个程序集中定义了扩展方法,编译器是否将该方法识别为有效的扩展方法,即使它使用手写的 ExtensionAttribute?
  • @rstevens 对于要在另一个程序集中定义的扩展方法,它必须已经在元数据中绑定 ExtensionAttribute,因此必须以某种方式对引用程序集可用,所以是的,它可以绑定扩展方法.
猜你喜欢
  • 2010-09-19
  • 2010-11-20
  • 2011-04-29
  • 2010-09-05
  • 2011-02-22
  • 2011-04-23
  • 2011-03-06
  • 1970-01-01
  • 2011-10-07
相关资源
最近更新 更多