如何覆盖子类中抽象类中成员的类型

时间:2009-09-26 20:06:24

标签: c# .net inheritance abstract-class covariance

我有以下代码:

public abstract class TestProperty
{
    public abstract Object PropertyValue { get; set; }
}

public class StringProperty: TestProperty
{
    public override string PropertyValue {get;set}
}

生成编译错误,我想我是否应该在TestProperty中使用泛型类型以实现我在子类中使用不同类型的同名的目标?

1 个答案:

答案 0 :(得分:6)

是的,C#不支持协变返回类型。你确实可以在这里使用泛型:

public abstract class TestProperty<T>
{
    public abstract T PropertyValue { get; set; }
}

public class StringProperty : TestProperty<string>
{
}

此时无需覆盖 - 除非您要做其他任何事情,否则您最好完全摆脱StringProperty并使用TestProperty<string>