zoukankan      html  css  js  c++  java
  • c#扩展方法

       上周五,看了一下公司一个项目的框架,虽然刚开始看的时候有些云里雾里的,但经过一天的潜心研究,慢慢的倒有些眉目了(还得花上几天的时间才能真正了解大师们的杰作)。在IT公司里面应该普遍都有一个这样的开发原则:开闭原则,通俗的讲就是尽量不修改原来的代码的基础上扩展新的功能方法。特别是在不同的公司之间,需要对另外的公司提供的类进行扩展的时候,就需要使用到扩展方法了,因为另外一个公司不可能把他做的类库全部给你看。连看一个最简单的例子:

         假如你在业务层BLL的一个BllClass类中定义了一个方法:

          public string SayHello()

         {

                return "大家好~~我是hellokit";

         }

       系统上线之后,这些类都已经编译完成了,当我们需要增加需求的时候,我们当然不可能再去修改这个类,这个时候据轮到扩展方法上场了~~:

       定义一个扩展方法:该方法必须是处在一个静态类中的静态方法:具体如下:

       public static SayHelloExtension

      {

            public static SayHelloExtensionMethod(this BLL.BllClass bllClass,string Name)//this BLL.BllClass bllClass指明你要往哪一个类里面添加扩展方法。

           {

                   return Name+"大家好呀~~~~";

           }

       }

        在客户端的调用:

        BllClass bllClass=new BllClass();

        bllClass.SayHello();

        //神奇的事情即将发生:

       bllClass.SayHelloExtensionMethod("小白猫");//BllClass类对象竟然可以点出SayHelloExtensionMethod()方法,这就是扩展方法的魅力。在这里大家可能会有个疑问:既然扩展方法本质上是一个静态的方法,那为什么可以通过类的对象点出来?这就是微软为方便程序员而特别定义的一种“怪异”的方法,就如同Linq命名空间下的where的方法一致。

      通过源代码我们可以知道:bllClass.SayHelloExtensionMethod("小白猫")这一句通过编译器编译过之后,就是调用了静态类SayHelloExtension类的SayHelloExtensionMethod(),而不是将该扩展方法添加到原有的实例方法上~~~

       在用MVC开发的项目中,这种扩展方法随处可见,这里只是扩展方法的一个小小的例子,权当入门~~~~

       

  • 相关阅读:
    long和Long的区别
    C语言的变量的内存分配
    Java蓝桥杯 算法提高 九宫格
    Java实现 蓝桥杯算法提高金明的预算方案
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
  • 原文地址:https://www.cnblogs.com/ghhlyy/p/2752753.html
Copyright © 2011-2022 走看看