如何扩展层次结构树的基类以提供基于封装的(protected
值)的额外功能,使该基类的所有子级都可以从这些扩展中受益?
请考虑以下类型的层次结构。
点表示更多引入额外类型的类(<T1, T2, T3>
,然后是<T1, T2, T3, T4>
等)。
如果要使用此代码,则应扩展较低的类之一(SimpleValidator
或SectionedValidator
),然后插入要验证的模型作为类型参数。 )。
现在,用户可以决定在Validator
类(即基类)上需要一些额外的功能。但是,由于所有内容都是封装的,因此您无法创建扩展方法,因为它们只能访问公共属性/方法。
通过继承来扩展Validator
也是不可行的,因为这意味着用户将不得不通过再次编写所有类型化的变体来自己完成整个锅炉过程。
理想情况下,我想在Validator
和Validator<...>
之间插入一个类,但是我认为这在C#中不可能以优雅/用户友好的方式实现。