C#UserControl多重继承
作者:互联网
我想创建自己的用户控件,这些控件实现的属性和方法比.NET Framework中提供的更多.首先,我想有一个自定义的UserControl类,我将其称为MyUserControl,当然它将继承自UserControl:
public class MyUserControl : UserControl {
public MyUserControl() : base() {
}
...
}
之后,我想拥有自己的MyTestBox,它将继承自TextBox.
public class MyTextBox : TextBox {
public MyTextBox() : base() {
}
...
}
我现在的问题是,我也希望MyTextBox也从MyUserControl继承,因为我在那里实现了属性和方法,因此我也需要MyTextBox.
我能想到的唯一解决方案是使MyTextBox仅从MyUserControl而不是从TextBox继承,而是在构造函数中添加一个TextBox:
public class MyTextBox : MyUserControl {
public MyTextBox() : base() {
Add(new TextBox());
}
...
}
但是然后我将不得不在MyTextBox中重新实现TextBox的每个属性和方法.有没有更好的方法来实现这一目标?
解决方法:
将所有通用代码分离到一个单独的类中,并使用委托进行处理.
即.像这样的东西:
public class MyUserControl : UserControl
{
private MyExtraControlCode _Extras;
public MyUserControl()
{
_Extras = new MyExtraControlCode(this);
}
public int GetInt32Value()
{
return _Extras.GetInt32Value();
}
}
public class MyTextBox : TextBox
{
private MyExtraControlCode _Extras;
public MyTextBox()
{
_Extras = new MyExtraControlCode(this);
}
public int GetInt32Value()
{
return _Extras.GetInt32Value();
}
}
或类似的东西.
并不是那么简单,但是.NET只是不支持多重继承.
标签:inheritance,user-controls,c 来源: https://codeday.me/bug/20191122/2061451.html