I was working on a series of dialogs that required validation, and since there‘s a funky validation setup in place, I thought I might build up a nice extension library. Noting that ASP.NET validation is far beyond Windows Forms, I thought it might also be a good opportunity to use extension methods.
Sadly, extension methods aren‘t supported by the C# 2.0 compiler (which I was using, part of Visual Studio 2005), nor are they supported by the .NET Framework 2.0. So, I wouldn‘t get IntelliSense support, and it wouldn‘t build in VS 2005. But I was curious, and since 2008 supports targeting the 2.0 framework, I thought I‘d give it a shot.
So I cranked open 2008 and created a quick test project. Building out the method:
public static class ExtensionMethods
{
public static void ValidateMe(this Form form)
{
form.ValidateChildren(ValidationConstraints.Enabled);
}
}
I get a compiler error:
error CS1110: Cannot define a new extension method because the compiler required type ‘System.Runtime.CompilerServices.ExtensionAttribute‘ cannot be found. Are you missing a reference to System.Core.dll?
So it appeared I would need to link to the 3.5 libraries... or would I?
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Method)]
public sealed class ExtensionAttribute : Attribute
{
public ExtensionAttribute() { }
}
}
Lo and behold, it compiled correctly. Then it worked correctly!