我想只强制执行基本抽象类的给定属性上的C#getter。派生类可以,如果他们想要的话,也可以为该属性提供一个setter用于静态绑定类型的公共使用。重写抽象只读属性以读取/写入属性
鉴于以下抽象类:
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;
}
但后来我得到一个语法错误,因为我尝试覆盖不存在的setter。我尝试了一些其他方式,比如声明基本setter是私人的,而且我仍然偶然发现了阻止我这样做的所有错误。必须有办法做到这一点,因为它不会破坏任何基础合同。另外,它可以通过接口完成,但我真的需要这个默认实现。我想知道是否有一个隐藏的C#语法技巧来做到这一点,否则我只会忍受它并实现手动SetProperty()方法。
交叉链接:http://stackoverflow.com/questions/2243886/make-a-read-only-property-writable-in-the-derived-class – Mikhail 2011-04-06 10:47:49