阅读 80

Using Extension Methods in .NET 2.0

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!

原文:https://www.cnblogs.com/x2009/p/15001435.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐