1

私は次のコードを持っています:

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

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

これはコンパイル エラーを生成します。子クラスで同じ名前の異なる型を持つという目標を達成するために、TestProperty でジェネリック型を使用する必要があるのでしょうか?

4

1 に答える 1

6

はい、C# は共変の戻り値の型をサポートしていません。ここでは実際にジェネリックを使用できます。

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

public class StringProperty : TestProperty<string>
{
}

この時点でオーバーライドする必要はありません。実際、他に何もするつもりがないのであれば、StringProperty完全に削除してTestProperty<string>.

于 2009-09-26T20:10:19.920 に答える