我有两节课:
public class A : System.Web.UI.WebControls.Button
{
public virtual string X
{
get
{
object obj = ViewState["X"];
if (obj != null) return (string)obj;
return null;
}
set
{
ViewState["X"] = value;
}
}
protected override void OnLoad(EventArgs e)
{
X=2;
}
}
和
public class B : System.Web.UI.WebControls.TextBox {
public virtual string X
{
get
{
object obj = ViewState["X"];
if (obj != null) return (string)obj;
return null;
}
set
{
ViewState["X"] = value;
}
}
protected override void OnLoad(EventArgs e)
{
X=2;
}
}
正如你必须看到A和B类具有完全相同的代码,我的问题是如何为它创建一个公共类并使用这两个类。
答案 0 :(得分:1)
继承的替代是组合。 定义一个新类并在A和B中插入它的方法的调用。在这个例子中它似乎太复杂了,但如果你决定替换ViewState [“X”]
,你将避免代码重复class C {
public virtual string X
{
get
{
return ViewState["X"];
}
set
{
ViewState["X"] = value;
}
}
public SetX()
{
X=2;
}
}
扩展方法也是一个很好的选择。