我想只強制執行基本抽象類的給定屬性上的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