编程语言
首页 > 编程语言> > C#UserControl多重继承

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