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



我有一个用于主从通用接口层次结构的接口:

public interface ITModel
{
ITPeriodHead[] PeriodHeads { get; set; }
}

我尝试以这种方式使用它:

public class T19Model:ITModel
{
public T19Item[] Items { get; set; }
**public T19PeriodHead[] PeriodHeads { get; set; }**
}

周期头数组在编译时导致错误, 尽管T19PeriodHead实现了ITPeriodHead,就像这样:

public class T19PeriodHead : BaseTPeriodHead, ITPeriodHead
{ ...

解决方案是什么?如果我使用 ITPeriodHead 数组,我将无法访问句点头项成员、属性、方法。

任何帮助都是值得赞赏的。

您必须遵守接口协定。 您返回的是接口定义的更具体的类,因此您没有完全定义接口。

您可以显式实现接口,但 setter 存在问题 - 如果有人试图将属性set到不是T19PeriodHeads 的对象数组怎么办?

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? */}
}
}

如果你不需要数组属性的 setter(也许是一个Add方法?),那么你很好。

最新更新