Vorrei forzare l'implementazione di un getter C# su una proprietà data da una classe abstract base. Le classi derivate potrebbero, se lo desiderano, fornire anche un setter per quella proprietà per l'uso pubblico del tipo con collegamento statico.Ignora proprietà readonly astratta per leggere/scrivere proprietà
Dato il seguente classe astratta:
public abstract class Base
{
public abstract int Property { get; }
}
Se voglio una classe derivata che implementa anche un setter, potrei ingenuamente provare:
public class Derived : Base
{
public override int Property
{
get { return field; }
set { field = value; } // Error : Nothing to override.
}
private int field;
}
Ma poi ho ottenere un errore di sintassi da quando ho prova a scavalcare il setter non esistente. Ho provato in un altro modo, come dichiarare privato il setter di base e così ancora mi imbatto in tutti i tipi di errori che mi impediscono di farlo. Ci deve essere un modo per farlo in quanto non infrange alcun contratto di classe base.
Inavvertitamente, può essere fatto con le interfacce, ma ho davvero bisogno di quella implementazione di default.
Mi sono imbattuto in questa situazione così spesso, mi chiedevo se c'era un trucco di sintassi C# nascosto per farlo, altrimenti mi limiterò a conviverci e implementerò un metodo manuale SetProperty().
Cross-link: http://stackoverflow.com/questions/2243886/make-a-read-only-property-writable-in-the-derived-class – Mikhail