我正在创建一组Web用户控件,它们将共享一个公共基类。基础将始终包含WebControl(Textbox,DropDownList,CheckBoxList,RadioButtonList,ListBox和其他可能)和RequiredFieldValidator。一切都很好,除了我的抽象InputControl属性(定义为类型WebControl)似乎没有我希望他们拥有的AutoPostBack属性(我认为这是因为并非所有WebControl都支持AutoPostBack)。我希望将此功能完全放在基类中,而不必在每个子类中定义它。它看起来像是:
public abstract WebControl InputControl { get; set; }
public bool AutoPostBack {
get { return InputControl.AutoPostBack; }
set { InputControl.AutoPostBack = value; }
}
但是这显然不起作用,因为AutoPostBack不是WebControl的属性。是否有另一个我可以指定支持此接口的接口,还是我需要创建自己的接口?
答案 0 :(得分:0)
autopostback不在任何基类中,因为只有一些控件需要autopostback属性。你能做的就是使用泛型
public class MyBaseUC<T> : System.Web.UI.UserControl
{
public abstract T InputControl { get; set; }
}
public partial class WebUserControl1 : MyBaseUC<TextBox>
{
protected void Page_Load(object sender, EventArgs e)
{
InputControl.AutoPostBack = false;
}
}
问候。