有一个基类BaseClass,其有若干个派生类AClass:BaseClass,BClass:BaseClass,...
现在要对这些类进行拓展,添加一些字段、属性、方法和事件来实现几个功能。其中,有些功能是BaseClass的所有派生类都要实现的,有些则是其特定的派生类去实现。
这些共有的功能自然应该集中起来,比如用一个类ExtBaseClass:BaseClass来承载这些功能。但是这样的话,由于C#不支持多继承,所以构造ExtAClass时不能既实现ExtBaseClass的功能,又访问AClass的成员。
那么这样的需求到底应该怎么去实现?
------解决方案--------------------------------------------------------
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
new ControlHelper(button1);
new ControlHelper(button2);
}
}
public class ControlHelper
{
readonly Control _control;
public ControlHelper(Control control)
{
_control = control;
_control.Click += a;
_control.Paint += b;
}
}
}
------解决方案--------------------------------------------------------
某些特性也可以泛型来实现,我给你实现了一个点击特性的按钮。。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ClickClass c = new ClickClass();
ExtButton<ClickClass> clickButton = new ExtButton<ClickClass>(c);
clickButton.Location = new System.Drawing.Point(64, 66);
clickButton.Name = "button2";
clickButton.Size = new System.Drawing.Size(75, 23);
clickButton.TabIndex = 1;
clickButton.Text = "button2";
clickButton.UseVisualStyleBackColor = true;
this.Controls.Add(clickButton);
}
}
public abstract class ExtClass
{
public virtual void ExtButton_Click(object sender, EventArgs e)