是否可以在子类中用不同的类型参数覆盖方法的返回值?
本文关键字:类型参数 覆盖 方法 返回值 子类 是否 | 更新日期: 2023-09-27 18:01:33
是否有可能在重写List
时更改类型?前提是它是兼容的?
例子:
public class Base
{
public virtual List<Object> SomeList { get; set; }
}
public class Foo : Base
{
public override List<Bar> SomeList { get; set; }
}
如果没有,有没有简单的解决方法?
至于我想做什么:我想有一个基类,将作为一个实现(不能是一个接口然而)的客户端和服务器类,将有自己的属性。客户端和服务器将有不同版本的Bar
类,因此它们需要有自己的列表。
不,不可能。对于你想要的,如果你使用一个泛型属性,它是可行的。
public class Base<T>
{
public List<T> { get; set; }
}
那么你的Foo
类将是:
public class Foo : Base<Bar>
{
}
这样,您的派生类(称为Foo
)就可以访问类型为Bar
的列表将被声明到它的基类。
这是不可能的,但根据您想要实现的目标,您可以在示例中使用接口作为List类型。