我不知道這是可能的,但是這是我的想法是:使用泛型創建可重用Control基類
public class ValidationControl<T> where T : Control, new()
{
[Browsable(true)]
[Category("Validation")]
[DefaultValue(false)]
public bool Required { get; set; }
public ValidationControl() { Required = false; }
public virtual void RunValidation() { ... }
}
然後我所有的自定義控件我可以簡單地使用通用控制作爲可重複使用的基類:
public class ValidationTextBox : ValidationControl<TextBox> { }
public class ValidationComboBox : ValidationControl<ComboBox> { }
我明白,我可以使用的接口,但後來我不得不重新輸入/複製粘貼&所需的性能等,對於每一個新的控制我做。此外,我無法以TextBox/ComboBox的這種方式覆蓋任何虛擬屬性/方法。這可能嗎?
我對解決方案並不十分確定,但我認爲您還需要一個「私人T」字段作爲「基準」對象(您要封裝的控件)。此外,方法將不得不檢查「T」是爲了觸及它將要處理的每個不同控制的正確位置。我前段時間嘗試了一些非常類似的東西,但由於整個項目的時間表很緊,因此放棄了 – Alex 2012-08-09 12:22:31