我不知道这是否可能,但这就是我的想法:
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> { }
我知道我可以使用接口但是我必须重新输入/复制&amp;为我制作的每个新控件粘贴所需的属性等。此外,我无法以TextB / ComboBox的方式覆盖任何虚拟属性/方法。这可能吗?
答案 0 :(得分:1)
继承与使用泛型不同。您希望以“泛型”方式指定您的类需要继承的内容,而不是,这不会起作用。你已经说过了,你不能覆盖任何属性,这是因为你没有从你的T继承。
为使您的控件正常工作,必须继承您的控件类型(T)。
答案 1 :(得分:0)
此外,我无法以这种方式覆盖任何虚拟属性/方法 对于TextBox / ComboBox。这可能吗?
您将无法覆盖TextBox / ComboBox中的任何内容。您只能从基类覆盖虚方法,在您的示例中,只有可覆盖的方法是RunValidation()(ValidationControl是基类)。
你的类可以包含TextBox / ComboBox,f。 E:
private T Control;
然后拨打电话,但就是这样。