我希望只在一个基础抽象类中强制实现C#属性的getter。派生类可以选择提供该属性的setter以便公开使用静态绑定的类型。
给定以下抽象类:
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;
}
由于我试图覆盖不存在的setter,所以出现了语法错误。我尝试了一些其他方式,例如将基础setter声明为私有等,但仍然遇到各种错误,阻止我这样做。必须有一种方法可以做到这一点,因为它不会违反任何基类协定。
顺便说一下,使用接口可以实现,但我真的需要默认实现。
我经常遇到这种情况,我想知道是否有一个隐藏的C#语法技巧可以解决这个问题,否则我就只能自己实现一个手动的SetProperty()方法。