使用更多指定的返回类型覆盖抽象属性(协方差)

class Base {} abstract class A { abstract public List Items { get; set; } } class Derived : Base {} class B : A { private List items; public override List Items { get { return items; } set { items = value; } } } 

编译器说B.Items必须是Base元素列表“匹配重写成员”A.Items。 我怎样才能做到这一点?

您最初尝试完成的操作是不可能的 – .NET不支持方法重载的co(contra)方差 。 属性也是如此,因为属性只是一对方法 。

但是你可以使你的类通用:

 class Base {} abstract class A where T : Base { abstract public List Items { get; set; } } class Derived : Base {} class B : A { private List items; public override List Items { get { return items; } set { items = value; } } }