public class ClassA
{
public static readonly string processName;
}
public class ClassB : ClassA
{
static ClassB()
{
processName = "MyProcess.exe";
}
}
Recibo un error al compilar el código C# anterior.Asignación al campo de solo lectura estático de la clase base
El error dice - "Un campo de sólo lectura estática no se puede asignar a (excepto en un constructor estático o un inicializador de variable)"
Pero yo estoy asignando en un constructor estático.
La necesidad de una variable estática es que la clase base tiene métodos que usan esta variable, pero las clases derivadas y la clase base deben tener valores diferentes para esta variable. Pero el valor es constante en todas las instancias de la clase respectiva. Debe ser de solo lectura porque no debe ser cambiado por ningún lado.
¿Cuál es el error en el código anterior? (Si hay alguno) No parece ser capaz de detectar uno. El mensaje de error no está ayudando. Como no estoy haciendo nada mal según eso.
Si hay un error, ¿cómo puedo implementar esta funcionalidad? Sé que una solución simple sería convertirla en una variable de instancia y asignarles diferentes valores en las clases derivadas. Pero eso es innecesario ya que el valor es constante en todas las instancias de la clase respectiva.
¡Exactamente! "Polimorfismo sobre el tipo". No creo que pueda ser mejor redactado. Gracias por señalar que no es compatible con .NET. – Poulo