C#中实现多继承的方式:混合+接口

开发 后端
本文作者朱永光先生,微软MVP、.NET技术的讲师。这里将为大家讲解如何在C#中实现多继承的方式,途径就是使用混合+接口。

有如下结构的代码:

image

其中Parent的ApplyEditable是一个Virtual方法,Child要对其进行各自不同的实现,即重写ApplyEditable方法。

上述代码中,很明显ParentA和ParentB有重复代码。但是由于C#不支持多继承,所以无法使用多继承的方式把这些重复代码封装起来。

我们只有走变通的道路:经过我的实践,使用混合+接口的方式。可以比较好的实现多继承。

我们还是直接来看图:

image

具体的解决步骤是:

1.把之前在ParentA和ParentB中公共的代码封装到BaseC中,并作为Parent的一个属性。

2.把需要重写的方法ApplyEditable定义到一个接口IBaseCAction中。(实际上,如果只有一个方法需要重写的话,可以不用定义接口,直接在BaseC中定义一个Action的委托变量就可以了。当然定义接口更方便支持多个重写方法。)

3.让ChildA和ChildB实现IBaseCAction接口,并分别实现ApplyEditable的不同代码。

4.在Child类的构造器中,把自己传给BaseC的实例化,即this.BaseC = new BaseC(this);

我就不贴代码了,完整的源代码下载地址为:http://cid-f73516baeac50992.skydrive.live.com/self.aspx/SharedCode/MultiDerived.zip

【编辑推荐】

  1. C#中的Adapter设计模式浅析
  2. VB.NET和C#逐层横向对比
  3. C#3.0中自动属性和对象初始化器
责任编辑:彭凡 来源: cnblogs
相关推荐

2009-06-16 10:20:05

多继承C#

2009-08-24 10:31:37

C#接口继承

2009-09-24 15:20:54

C#接口定义

2009-09-01 18:29:10

C#继承C#多态

2009-08-25 17:55:52

C#实现Strateg

2009-08-31 15:55:17

C#实现Strateg

2011-07-14 11:08:30

C#继承

2009-08-13 18:15:06

C#继承构造函数

2009-08-31 17:16:12

C#实现接口

2009-08-31 18:01:41

C#接口事件

2009-08-24 10:06:31

C#接口成员

2009-07-31 18:28:46

实现C#显示图像

2009-02-05 15:32:23

接口委托

2009-08-24 10:47:45

C#接口重实现

2009-08-31 16:23:13

C#接口

2009-08-31 16:48:02

C#实现IDispos

2009-09-01 18:29:24

C#实现多个接口

2009-09-04 13:22:31

C#实现多个接口

2009-05-26 16:33:48

PythonC#Run As

2009-09-07 05:24:22

C#窗体继承
点赞
收藏

51CTO技术栈公众号