C#接口包含接口数组,层次结构

时间:2015-04-21 12:39:25

标签: c# interface

我有一个用于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数组,我将无法访问期头物品成员,属性,方法....

任何帮助都是适当的。

1 个答案:

答案 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? */} } } 方法?)那么你就可以了。