我有一个用于主从通用接口层次结构的接口:
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
到不是T19PeriodHead
s 的对象数组怎么办?
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
方法?),那么你很好。