【发布时间】:2011-12-21 22:34:09
【问题描述】:
Interface A
{
string x {get;set;}
IEnumarable<InterfaceB> DetailList { get; set; }
}
Interface B
{
int z;
int y;
}
Class B :Interface B
{
implements z;
implements y;
}
Class A :Interface A
{
implements x;
IEnumarable<ClassB> DetailList {get;set;} // This line is giving trouble.
}
此代码是否违反 OO 概念。我想如果我从 InterfaceB 派生 ClassB,那么我可以在 ClassA 中使用 ClassB 而不是 InterfaceB。 VS 不喜欢这样,它要求我在 ClassA 中使用 InterfaceB 而不是 ClassB。 有没有其他方法可以做到这一点。
我愿意考虑替代设计选项,我有一些属性由接口 A 定义的域对象,每个域对象都有由接口 B 定义的相应对象 例如 音乐会(A) 音乐会地点(B) 喜剧表演(A) 喜剧表演地点(B)
如果您认为我不够清楚,请随时提出更多问题。
提前致谢
【问题讨论】:
-
接口A上的
DetailList是否需要公开设置? -
是的。它必须是可公开设置的,我愿意考虑替代设计选项,我有一些属性由接口 A 定义的域对象,每个域对象都有由接口 B 定义的相应对象,例如 Concert(A) Concertlocations(B) comedyshow (A) 喜剧表演地点(B)
-
您的代码无法编译。但是你为什么要这样做呢?当您要向其添加 ClassB 实例时,DetailList 仍然可以是 IEnum_e_rable
。
标签: c# inheritance interface ienumerable