我不知道这是可能的,但是这是我的想法是:使用泛型创建可重用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