我只想强制在基础抽象类的给定属性上实现 C# getter。如果需要,派生类还可以为该属性提供一个设置器,以供公众使用静态绑定类型。
给定以下抽象类:
public abstract class Base
{
public abstract int Property { get; }
}
如果我想要一个也实现 setter 的派生类,我可以天真地尝试:
public class Derived : Base
{
public override int Property
{
get { return field; }
set { field = value; } // Error : Nothing to override.
}
private int field;
}
但是后来我得到一个语法错误,因为我尝试覆盖不存在的设置器。我尝试了其他一些方法,例如将 base setter 声明为私有等,但我仍然偶然发现各种错误阻止我这样做。必须有一种方法可以做到这一点,因为它不会破坏任何基类合同。
顺便说一句,它可以用接口来完成,但我真的需要那个默认实现。
我经常偶然发现这种情况,我想知道是否有隐藏的 C# 语法技巧可以做到这一点,否则我将忍受它并实现手动 SetProperty() 方法。