Using Extension Methods with .NET Framework 2.0

后端 未结 2 1960
悲哀的现实
悲哀的现实 2020-12-18 04:33

Under Visual Studio 2008
Can I create an Extension Method to work under a .NET Framework 2.0 project?

相关标签:
2条回答
  • 2020-12-18 05:22

    There is an ugly hack that gets Extension methods working in .Net 2.0; but it would better just to upgrade your framework to 3.5.

    Alternate Sources: 1, 2.

    In short (from link #2): Extension methods are just normal static methods tagged with the [Extension] attribute. This attribute is actually just added by the compiler behind the scenes. In .NET 3.5, it lives in System.Core, so just define your own attribute like this:

    namespace System.Runtime.CompilerServices
    {
      [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
      public class ExtensionAttribute : Attribute
      {
      }
    }
    
    0 讨论(0)
  • 2020-12-18 05:24

    Absolutely. There are a few hacky methods, but the one I'm using is to take System.Core from the Mono project, add all of its code to a new .NET 2.0 Class Library named System.Core in my own solution, and recompile it. There are a few things to fix, like changing their MonoTODO attributes to TODO comments, and fixing the AssemblyInfo.cs, but it works great. I'm now using both LINQ and extension methods in a 2.0 project compiled in VS 2008.

    Assuming you get the 2.4 version of the Mono source, you should find the code under:

    <extracted directory>/mono-2.4/mcs/class/System.Core
    

    If you're stuck in VS 2005, you can download SharpDevelop, build your System.Core dll with that targeted to 2.0, add a reference to the compiled assembly, and it may work, but I don't know if VS 2005 will have a problem with the extension syntax or not. I imagine it will give you some lip.

    0 讨论(0)
提交回复
热议问题