两个班级:A& B,每个都有MyProp属性。
A的MyProp属性只能是A类型。 B的MyProp属性可以是A或B类型。
为了实现这一点,我考虑创建一个包含IBase类型属性MyProp的接口IBase,并制作A& B实现它。
在这种情况下的问题是A可能有一个B类型的MyProp,所以它不是一个选项。
我可以从界面中删除MyProp属性并在B中创建A和IBase中的A类属性但我觉得它不是一个合适的解决方案,因为这两种类型都有一个MyProp属性,其工作方式相同我觉得应该在层次结构中处理更高的属性。
我还想到了一个通用抽象基类,它有一个属性MyProp,它的泛型类型但是对于B类型,泛型类型是一个无限递归类型:
ABase<ABase<ABase<...>>>
在C#中有没有正确的方法来实现这一目标?
修改:更改了该媒体资源的名称,以免造成混淆
答案 0 :(得分:1)
我不认为这个问题很可能很好地解决了#34;在编译时#34;可以这么说。但我想,你应该为A和B创建一些共同的祖先,通过在不正确的类型检测上引发异常,在属性设置器中创建该类型的属性和控制类型有效性。
如果您的代码经过适当测试,那么只能在运行时检测到错误分配这一事实并不重要。