GetとSetの両方を持つように設定された抽象プロパティを持つ抽象クラスがあります。派生クラスからこのプロパティを常に取得できるようにしたいことはわかっていますが、特定のタイプの派生クラスでこのプロパティを設定しても意味がない場合があります。
派生クラスでSetアクセサーを省略することはできません(以下のコード例を参照)。派生クラスのsetアクセサーをオーバーライドして、ユーザーから渡された値に対して何もしないようにすることができます。しかし、特定の派生クラスのプロパティを実際に読み取り専用にする別の方法はありますか?最終的には、これらのプロパティをプロパティグリッドに表示しますが、何もしないフィールドにユーザーが値を入力することは望ましくありません。たぶん、特定の派生クラスでプロパティを読み取り専用と見なすだけですか?
また、ICustomTypeDescriptorのオーバーライドなど、プロパティをプロパティグリッドに正しく表示するために、タイプ記述子をいじりたくないのです。
public abstract class MyClass
{
public abstract string MyProperty
{
get;
set;
}
}
public abstract class MyDerivedClass
{
public override string MyProperty
{
//VS complains that the Set accessor is missing
get;
}
}