我有一个用于master-detail公共接口层次结构的接口:
public interface ITModel
{
ITPeriodHead[] PeriodHeads { get; set; }
}
我尝试以这种方式使用它:
public class T19Model:ITModel
{
public T19Item[] Items { get; set; }
**public T19PeriodHead[] PeriodHeads { get; set; }**
}
PeriodHeads 数组在编译时导致错误, 尽管 T19PeriodHead 实现了ITPeriodHead,如下所示:
public class T19PeriodHead : BaseTPeriodHead, ITPeriodHead
{ ...
解决方案是什么?如果我使用ITPeriodHead数组,我将无法访问期头物品成员,属性,方法....
任何帮助都是适当的。
答案 0 :(得分:4)
您必须遵守接口合同。您将返回一个接口定义的更具体的类,因此您没有完全定义接口。
你可以显式实现该接口,但是你遇到了setter的问题 - 如果有人试图将set
属性转换为非{{1}的对象数组怎么办? } S:
T19PeriodHead
如果您不需要数组属性的setter(可能是public class T19Model:ITModel
{
public T19Item[] Items { get; set; }
public T19PeriodHead[] PeriodHeads { get; set; }
ITPeriodHead[] ITModel.PeriodHeads
{
get {return PeriodHeads;}
set {/* what to do here if value is not an array of T19PeriodHeads? */}
}
}
方法?)那么你就可以了。