基本抽象クラスの特定のプロパティに C# ゲッターの実装のみを強制したいと考えています。派生クラスは、必要に応じて、静的にバインドされた型をパブリックに使用するために、そのプロパティのセッターも提供する場合があります。
次の抽象クラスがあるとします。
public abstract class Base
{
public abstract int Property { get; }
}
セッターも実装する派生クラスが必要な場合は、素朴に試すことができます。
public class Derived : Base
{
public override int Property
{
get { return field; }
set { field = value; } // Error : Nothing to override.
}
private int field;
}
しかし、存在しないセッターをオーバーライドしようとすると、構文エラーが発生します。ベースセッターをプライベートと宣言するなど、他の方法を試しましたが、それを妨げるあらゆる種類のエラーに出くわしました。基本クラスの契約に違反しないため、それを行う方法が必要です。
ちなみに、それはインターフェースで行うことができますが、私は本当にそのデフォルトの実装が必要です.
私はそのような状況に頻繁に出くわしました。それを行うための隠された C# 構文トリックがあるかどうか疑問に思っていました。