Me gustaría forzar solo la implementación de un getter de C# en una propiedad dada a partir de una clase abstracta base. Las clases derivadas pueden, si así lo desean, también proporcionar un setter para esa propiedad para uso público del tipo enlazado estáticamente.Anular propiedad de solo lectura para leer/escribir propiedad
Dada la siguiente clase abstracta:
public abstract class Base
{
public abstract int Property { get; }
}
Si quiero una clase derivada que también implementa un setter, ingenuamente podría intentar:
public class Derived : Base
{
public override int Property
{
get { return field; }
set { field = value; } // Error : Nothing to override.
}
private int field;
}
Pero cuando me siento un error de sintaxis desde que intenta anular el colocador no existente. Intenté de alguna otra manera, como declarar el iniciador de bases en privado y tal, y aún me tropiezo con todo tipo de errores que me impiden hacer eso. Debe haber una forma de hacerlo, ya que no rompe ningún contrato de la clase base.
Incidentalmente, se puede hacer con interfaces, pero realmente necesito esa implementación predeterminada.
Me tropecé con esa situación tan a menudo, me preguntaba si había un truco de sintaxis de C# oculto para hacer eso, sino que simplemente viviré con él e implementaré un método manual SetProperty().
Cross-link: http://stackoverflow.com/questions/2243886/make-a-read-only-property-writable-in-the-derived-class – Mikhail