Sin ningún código en las subclases, me gustaría que una clase abstracta tenga una copia diferente de una variable estática para cada subclase. En C#Hacer una superclase tiene una variable estática que es diferente para cada subclase en C#
abstract class ClassA
{
static string theValue;
// just to demonstrate
public string GetValue()
{
return theValue;
}
...
}
class ClassB : ClassA { }
class ClassC : ClassA { }
y (por ejemplo):
(new ClassB()).GetValue(); // returns "Banana"
(new ClassC()).GetValue(); // returns "Coconut"
Mi solución actual es la siguiente:
abstract class ClassA
{
static Dictionary<Type, string> theValue;
public string GetValue()
{
return theValue[this.GetType()];
}
...
}
Aunque esto funciona bien, me pregunto si hay una manera más elegante o forma incorporada de hacer esto?
Esto es similar a Can I have different copies of a static variable for each different type of inheriting class, pero no tengo ningún control sobre las subclases
Probablemente podrías hacerlo pirateando un 'Dictionary 'y llamando a' GetType() ', pero sería horrible ... –
Para esos miembros estáticos virtuales/abstractos sería bueno. ver (buscar "miembro estático virtual") –
VolkerK
¿por qué no simplemente hacerlo NO estático? – BlackTigerX