Senza alcun codice nelle sottoclassi, vorrei che una classe astratta avesse una copia diversa di una variabile statica per ogni sottoclasse. In C#Fare una superclasse ha una variabile statica diversa per ogni sottoclasse in C#
abstract class ClassA
{
static string theValue;
// just to demonstrate
public string GetValue()
{
return theValue;
}
...
}
class ClassB : ClassA { }
class ClassC : ClassA { }
e (per esempio):
(new ClassB()).GetValue(); // returns "Banana"
(new ClassC()).GetValue(); // returns "Coconut"
mia soluzione attuale è questa:
abstract class ClassA
{
static Dictionary<Type, string> theValue;
public string GetValue()
{
return theValue[this.GetType()];
}
...
}
Anche se questo funziona bene, mi chiedo se c'è un più elegante o modo integrato di farlo?
Questo è simile a Can I have different copies of a static variable for each different type of inheriting class, ma non ho alcun controllo su sottoclassi
Probabilmente si potrebbe fare hacking un 'dizionario' e chiamando 'GetType()', ma sarebbe orribile ... –
Per quel membro statico virtuale/astratto sarebbe bello. vedi (cerca "membro statico virtuale") –
VolkerK
perché non renderlo NON statico? – BlackTigerX