C# 使用更多指定的返回类型(协方差)重写抽象属性 类基类{} 抽象A类 { 抽象公共列表项{get;set;} } 派生类:基{} B类:A { 私人清单项目; 公共覆盖列表项 { 得到 { 退货项目; } 设置 { 项目=价值; } } }
编译器说B.Items必须是基本元素的列表,以“匹配被重写的成员”A.Items。我怎样才能做到这一点呢?你最初试图完成的事情是不可能的。属性也是如此,因为属性只是 但您可以将类设置为通用类:C# 使用更多指定的返回类型(协方差)重写抽象属性 类基类{} 抽象A类 { 抽象公共列表项{get;set;} } 派生类:基{} B类:A { 私人清单项目; 公共覆盖列表项 { 得到 { 退货项目; } 设置 { 项目=价值; } } },c#,c#-4.0,overriding,abstract,covariance,C#,C# 4.0,Overriding,Abstract,Covariance,编译器说B.Items必须是基本元素的列表,以“匹配被重写的成员”A.Items。我怎样才能做到这一点呢?你最初试图完成的事情是不可能的。属性也是如此,因为属性只是 但您可以将类设置为通用类: class Base {} abstract class A { abstract public List<Base> Items { get; set; } } class Derived : Base {} class B : A { private List<
class Base {}
abstract class A
{
abstract public List<Base> Items { get; set; }
}
class Derived : Base {}
class B : A
{
private List<Derived> items;
public override List<Derived> Items
{
get
{
return items;
}
set
{
items = value;
}
}
}
类基类{}
抽象A类
其中T:Base
{
抽象公共列表项{get;set;}
}
派生类:基{}
B类:A
{
私人清单项目;
公共覆盖列表项
{
得到
{
退货项目;
}
设置
{
项目=价值;
}
}
}
您最初试图实现的目标是不可能的。属性也是如此,因为属性只是
但您可以将类设置为通用类:
class Base {}
abstract class A
{
abstract public List<Base> Items { get; set; }
}
class Derived : Base {}
class B : A
{
private List<Derived> items;
public override List<Derived> Items
{
get
{
return items;
}
set
{
items = value;
}
}
}
类基类{}
抽象A类
其中T:Base
{
抽象公共列表项{get;set;}
}
派生类:基{}
B类:A
{
私人清单项目;
公共覆盖列表项
{
得到
{
退货项目;
}
设置
{
项目=价值;
}
}
}
但您可以仅对set或only get属性使用协方差。但您可以仅对set或only get属性使用协方差。