实现类型化的受限制属性

时间:2015-03-06 09:39:19

标签: c# oop

两个班级: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#中有没有正确的方法来实现这一目标?

修改:更改了该媒体资源的名称,以免造成混淆

1 个答案:

答案 0 :(得分:1)

我不认为这个问题很可能很好地解决了#34;在编译时#34;可以这么说。但我想,你应该为A和B创建一些共同的祖先,通过在不正确的类型检测上引发异常,在属性设置器中创建该类型的属性和控制类型有效性。

如果您的代码经过适当测试,那么只能在运行时检测到错误分配这一事实并不重要。