基本抽象クラスの特定のプロパティに対してのみC#ゲッターの実装を強制したいと思います。派生クラスは、必要に応じて、静的にバインドされた型をパブリックに使用するためにそのプロパティの設定を提供することもできます。 プロパティを読み書きするための抽象readonlyプロパティをオーバーライドします。
public class Derived : Base
{
public override int Property
{
get { return field; }
set { field = value; } // Error : Nothing to override.
}
private int field;
}
をしかし、その後、私は私ので、構文エラーを取得:私もセッターを実装派生クラスを使用する場合は、私は単純に試みることができる
public abstract class Base
{
public abstract int Property { get; }
}
次の抽象クラスを考えると
既存のセッターをオーバーライドしてみてください。私はベースセッターをプライベートと宣言するなど、何か他の方法を試してみました。基本クラスの契約を破っていないので、これを行う方法が必要です。
私は実際には、インターフェイスで行うことができますが、私は本当にデフォルトの実装が必要です。
私はそのような状況に頻繁に遭遇しました。私はそれを行うために隠されたC#構文のトリックがあるかどうか疑問に思っていました。そうでなければ、手動のSetProperty()メソッドを実装します。
クロスリンク:http://stackoverflow.com/questions/2243886/make-a-read-only-property-writable-in-the-derived-class – Mikhail