6

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

1

2 Answers 2

10

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
  {
  }
}
Sign up to request clarification or add additional context in comments.

Comments

2

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.

2 Comments

The key is compiled in VS 2008. I'm still stuck with VS 2005 :(
I saw the VS2008 tag and assumed 2008. If you're in 2005, you may be able to find a pre-compiled binary, or use SharpDevelop (I'll update with a link). If you're compiling in Win2K, you're out of luck, unfortunately, since it won't support the 3.5 framework.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.