博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#使用This关键字来为类拓展方法,使用这一特性可以实现类的多继承。
阅读量:6481 次
发布时间:2019-06-23

本文共 1231 字,大约阅读时间需要 4 分钟。

下面这个例子我为string这个类拓展了一个MegerString的方法。

public static class ThisDemo{

  //定义一个合并字符串的方法

  public static string MegerString(this string str1, string str2)

  {

    return str1 + str2;
  }

}

public class TestDemo{  

  public void Test()

  {
    string str1 = "str1";
    string str2 = "str2";
    string str3 = str1.MegerString(str2);//string对象可以直接调用到这个方法。
    Console.Write(str3);
  }

}

以上是关于this拓展类方法的简单应用,下面利用这个一特性,在C#里模拟类的多继承。

我们都知道C#里类是单继承,接口是多继承的。那么在C#里怎么实现类的多继承了,

下面的例子就实现了如何在C#里模拟类的多继承。

#region=======C#中实现多继承=========

//C#中实现多继承
/// <summary>
/// 定义一个飞的接口
/// </summary>
public interface IFly
{

}

/// <summary>
/// 定义一个拓展类来为接口添加方法,继承该接口的类就能拥有这个方法,如何:IFly
/// </summary>
public static class ExtendClass
{
  public static void Fly<T>(this T childrenClass)where T:IFly
  {
    Console.Write("我会飞了");
  }
}
/// <summary>
/// 鸟类继承IFly接口,并且继承的Fly方法
/// </summary>
public class Bird:IFly
{
  public void TigerFly()
  {
    this.Fly();
  }

}

#endregion===============

上面的例子中鸟类继承了IFly接口,而且同时拥有了Fly()方法,所以这里就是通过接口+This拓展方法的形式模拟了类的多继承。

这样当后期维护时当需求出现变更,继承与抽象类的所有子类都统一需要实现某一个方法时就可以使用这种方式来实现。

有些人会问:为什么不直接在原有的抽象类的基础上加上要实现的方法,可是这样做就违背了对修改关闭对拓展开发的原则。

我们应该尽量的不去改动以前的代码逻辑而去实现新的功能。这样才符合设计模式的开闭原则。

转载于:https://www.cnblogs.com/Neallin/p/5590392.html

你可能感兴趣的文章
HTTPS(SSL)详解以及PHP调用方法
查看>>
突发小事件,USB接口问题
查看>>
Nginx负载均衡配置实例详解
查看>>
L1-009. N个数求和
查看>>
实参传递不当导致的运行时错误
查看>>
sqlserver 批量删除存储过程(转)
查看>>
自建型呼叫中心
查看>>
Inno setup中定制安装路径
查看>>
要懂得对你的老板好一点!
查看>>
HDU5139:Formula(找规律+离线处理)
查看>>
visio如何让动态连接线的单箭头变成双箭头?
查看>>
poj 1273 Drainage Ditches 网络流最大流基础
查看>>
Bash: how to check if a process id (PID) exists
查看>>
Mirantis Fuel fundations
查看>>
启动Tomcat一闪而过——分析及解决过程
查看>>
Android intent action大全
查看>>
使用 Flash Builder 的 Apple iOS 开发过程
查看>>
RabbitMq_05_Topics
查看>>
redis.conf
查看>>
SCALA中的函数式编程
查看>>