0

我正在创建一组 Web 用户控件,它们将共享一个公共基类。基础将始终包含一个 WebControl(文本框、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 的属性。我是否可以指定另一个接口来支持这一点,或者我需要创建自己的接口吗?

4

1 回答 1

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;
        }
    }

问候。

于 2012-04-23T05:07:44.400 回答