与Asp.Net的验证控件(脱节,冗长,笨拙)一样烦恼,我决定看看是否可以创建一系列输入控件,每个控件都带有自己的验证方法和属性。
我的一个设计标准是允许我的验证属性在VS intellisense中显示为Tag属性以及控件的其余属性。
我的第一个想法是创建一个继承自WebControl并实现新属性和方法的基类,但没有多个iheritance,这意味着无法从TextBox中派生出来。
这似乎意味着
继承每个WebControl(TextBox,DropDown等)和(重新)编码我的每个控件类的公共验证属性和方法(有或没有看似浪费的界面),或
< / LI>编写基类(比如ValidatedInputControl)一次,找到一种在继承自ValidatedInputControl的类中实现单个WebControl(文本框等)的方法。我怀疑这意味着渲染等,或
找到更有效的其他模式/设计
所以,我正在寻找建议......
答案 0 :(得分:0)
为什么几个小时之后,愚蠢的问题总是显得笨拙......
对于任何有兴趣的人来说,在休息和吃晚餐之后不难想象...多态101和一些.Net魔法...
使用您希望所有派生控件继承的成员创建一个具体类(MyBaseClass)。从 CompositeControl 类继承此基类。
现在创建你想要的各个控件(myTextBox,myDropDown等)继承自MyBaseClass - 这些单独的控件类现在的类型为 MyBaseClass和CompositeControl 。
因此,在每个单独的控件类(比如MyTextBox)中,您现在可以实例化适当的本机控件(TextBox)并像任何复合控件一样管理它,但它也可以访问MyBaseClass成员。
总而言之......就像往常一样只是复合控制业务......