質問

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

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

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

コンパイルエラーを生成し、私は子クラスに同じ名前の異なるタイプを持つの私の目標をachiveするためにTestPropertyにジェネリック型を使用する必要がありますかしら?

役に立ちましたか?

解決

はい、C#は共変戻り値の型をサポートしていません。あなたは確かにここにジェネリックを使用することができます:

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

public class StringProperty : TestProperty<string>
{
}

この時点でオーバーライドする必要はありません - あなたは何かをやろうとしている場合を除き確かに、あなたにも完全にStringPropertyを取り除くかもしれないし、ちょうどTestProperty<string>を使用する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top