读书人

C#多沿袭实现

发布时间: 2013-08-04 18:26:16 作者: rapoo

C#多继承实现
比如说TextBox1:System.Windows.Form.TextBox,包括方法tm1();
Control1:System.Windows.Form.Control,包括方法cm1();
现在我要实现TextBox2,自动带有TextBox1.tm1和Control1.cm1()
[解决办法]
public class TextBoxEx:TextBox
{
}
[解决办法]
这个c#不可以实现。只能继承一个类来继承你想要的一个方法,然后另一个方法要自己新建。
[解决办法]
C#不支持多继承。你可以使用扩展方法给一个类附加额外的方法,代替继承。

比如
static class ControlHelper
{
public static void cm1(this Control c) { }
}

这样所有Control以及Control的派生类都可以使用cm1这个方法了。
[解决办法]

引用:
问题根源在于
从逻辑上讲,TextBox应该是Control1的继承类,
从继承树上讲,TextBox只是Control的继承类,而不是Control1的继承类

再补充一下,要求在.Net2.0中使用多继承解决
哈哈,扩展方法是3.0的特征
[解决办法]
C#不支持多继承.你上面的这两个类,都是普通的类,不是接口,所以不能达到这个功能.
如果是接口的话,比如接口IA,IB,都包含有Show(),即你的类要实现IA,IB的,也是要"显示实现接口"才行.
这是题外话了.
你上面的要求是无法实现,C#可以多继承接口,但是拒绝多继承类.
[解决办法]

public class TextBox2:TextBox
{
TextBox2 t1;
Control1 c1;

//略

public void tm1()
{
t1.tm1();
}
public void cm1()
{
c1.cm1();
}
}


楼主这样能实现你要求么

读书人网 >C#

热点推荐