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