是否可以在子类中使用不同的类型参数覆盖方法的返回值?

时间:2014-05-04 20:41:06

标签: c# .net list override

覆盖List更改类型时是否可能?只要它兼容吗?

示例:

public class Base
{
     public virtual List<Object> SomeList { get; set; }
}

public class Foo : Base
{
     public override List<Bar> SomeList { get; set; }
}

如果没有,是否有解决此问题的简单方法?

至于我想做什么:我希望有一个基类,它将作为一个实现(不能是一个接口),用于具有自己属性的客户端和服务器类。客户端和服务器将具有Bar类的不同版本,因此它们需要拥有自己的列表。

2 个答案:

答案 0 :(得分:1)

不,这是不可能的。如果你使用通用属性,那么你想要的就是可行的。

public class Base<T>
{
    public List<T> { get; set; }
}

那么你Foo课就是:

public class Foo : Base<Bar>
{

}

通过这种方式,您派生的类Foo可以访问类型Bar的列表,其中 将被声明为它的基类。

答案 1 :(得分:0)

这是不可能的,但根据您想要实现的目标,您可以在示例中使用接口作为List类型。