• C#3.0中的扩展方法


    在实际应用中,开发者完成代码的编译后,除非重新编译更改后的代码,否则开发者很难在原有代码中添加新的功能.

        在C#3.0中,提供了一个扩展方法的新特性,可以使得开发者在编译后的程序集里边添加相关的方法,从而很容易地扩展原有的功能.

    1、扩展方法的定义 代码生成器

    定义扩展方法时,首先这个扩展方法要被定义在一个静态类中(程序集加载时自动加载),因此这个扩展方法也必须是一个静态方法。其次,在扩展方法的参数列表中,需要在第一个参数类型的前面添加关键字this作为修饰符,而紧跟其后的就是扩展类的名称。如下所示:

    代码:扩展方法的定义

    static class MyExtensions    {        public static string  GetAssemblyName(this object obj)        {             return obj.GetType().Name;        }    }

    在上述代码中,定义了一个静态类MyExtension,其中定义了一个扩展方法GetAssemblyName()。在该方法的参数列表中,使用了关键字this来修饰object类型,将扩展方法与object相关联。因此,对于任何object对象和继承了object类的类,都可以使用GetAssemblyName()方法,从而扩展了object的方法。

    2、扩展方法的使用

        使用扩展方法,既可以调用关联类型实例化对象的扩展方法,也可以直接调用静态类中的扩展方法,其中的方法参数输入关联类型。

    代码: 实例化对象的扩展方法

    static void Main(string[] args)        {            object obj = new object();            obj.GetAssemblyName();        }

    在代码中,定义了一个object类型的参数obj,并调用obj类型的扩展方法GetAssemblyName,获取Assembly的名称.

    当书写代码时,在VS环境中,开发者可以利用只能感知功能,比较容易地选择扩展方法.如下图所示:


     

    此外还可以针对泛型类型添加扩展方法,这样开发者就可以在制定的泛型类中使用扩展方法。俺还不是很理解泛型,暂时不显摆了。

  • 相关阅读:
    Webwork【04】Configuration 详解
    Webwork【03】核心类 ServletDispatcher 的初始化
    Webwork【02】前端OGNL试练
    Webwork【01】Webwork与 Struct 的前世今生
    Oracle 数据库日常巡检
    php jquery ajax select 二级联动【get方式】
    PHP+ajax实现二级联动【post+json方式】
    thinkphp中在页面怎么格式输出小数和时间
    DataTables Bootstrap 3 example
    Bootstrap表格动态加载内容和排序功能
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/4121540.html
Copyright © 2020-2023  润新知