子クラスで抽象クラスのメンバの種類を無効にする方法
-
18-09-2019 - |
質問
私は、次のコードを持っています:
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>
を使用する
所属していません StackOverflow