• (转)C# -- 扩展方法的应用(Extension Methods)


    本文转载自:http://blog.csdn.net/zxz414644665/article/details/9793205

    当你有下面这样一个需求的时候,扩展方法就会起到作用:在项目中,类A需要添加功能,我们想到的就是在类A中添加公共方法,这个显而易见肯定可以,但是由于某种原因,你不能修改类A本身的代码,但是确实又需要增加功能到类A中去,怎么办? 这个时候扩展方法(Extension Methods)就会帮助你完成上述功能了。现在举例如下:

    类A:简单起见,类A中只有一个自己的方法。

    using System;
    
    namespace TestApp.Method
    {
        public class Test
        {
            public void TestMethod()
            {
                Console.WriteLine("public void TestMethod()");
            }
        }
    }

    现在我需要让类A添加一个方法,但是又不能修改类A,好,那我们就添加一个扩展方法(Extension Methods)如下:

    using System;
    using TestApp.Method;
    
    namespace TestApp.ExtensionMethod
    {
        public static class ExtendClass
        {
            public static void ExtendMethod(this Test test)
            {
                Console.WriteLine("test.ExtendMethod()");
            }
        }
    }

    其实,扩展方法(Extension Methods)当然需要一个类包装,所以我们必须得有一个类,请注意,这个类必须是静态类,另外扩展方法(Extension Methods)必须也是静态方法,方法的参数中必须要有被扩展类作为其中一个参数,此参数前面用this关键字修饰。

    好了,这样我们的扩展就算完成了,下面我们就可以通过类A的实例来调用这个扩展方法了,如下:

    using System;
    using TestApp.ExtensionMethod;
    using TestApp.Method;
    
    namespace TestApp
    {
            static void Main(string[] args)
            {
                Test test = new Test();
                test.TestMethod();      // Call the method of itself
                test.ExtendMethod();    // Call the extension method
             }
    }

    这里只要using扩展方法(Extension Methods)所在命名空间既可以通过类A的实例来调用这个扩展方法(Extension Methods)了。

    另外MSDN有一篇文章专门讲这个的,大家可以去看看: Extension Methods 。

  • 相关阅读:
    nginx解决Ajax跨域问题
    传入token值到下个操作
    获取token值并写入Excel文件中
    读取配置文件.ini
    js判断页面元素是否存在
    SQL Server数据库管理常用的SQL和TSQL语句
    常用聊天工具(IM)在线客服链接代码
    [转]最大概率选择到“最好女孩”的算法
    Web开发:设置复选框的只读效果
    Web开发常用边框颜色汇总
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/4431238.html
Copyright © 2020-2023  润新知