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)
如果您认为我不够清楚,请随时提出更多问题。
提前致谢
最佳答案
您可以这样:
public interface InterfaceA<T> where T : InterfaceB
{
string x {get;set;}
IEnumerable<T> DetailList { get; set; }
}
public interface InterfaceB
{
int z { get; }
int y { get; }
}
public class ClassB : InterfaceB
{
public int z { get; private set; }
public int y { get; private set; }
}
public class ClassA : InterfaceA<ClassB>
{
public int z { get; private set; }
public string x { get; set; }
public IEnumerable<ClassB> DetailList {get;set;}
}
但我不确定这是否适合您?
有关更多信息,请参见此处:c# interface implemention - why does this not build?
关于c# - 如何实现定义另一个接口(interface)元素的接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8597291/