Sans aucun code dans les sous-classes, j'aimerais qu'une classe abstraite ait une copie différente d'une variable statique pour chaque sous-classe. En C#Faire une superclasse a une variable statique qui est différente pour chaque sous-classe dans C#
abstract class ClassA
{
static string theValue;
// just to demonstrate
public string GetValue()
{
return theValue;
}
...
}
class ClassB : ClassA { }
class ClassC : ClassA { }
et (par exemple):
(new ClassB()).GetValue(); // returns "Banana"
(new ClassC()).GetValue(); // returns "Coconut"
Ma solution actuelle est la suivante:
abstract class ClassA
{
static Dictionary<Type, string> theValue;
public string GetValue()
{
return theValue[this.GetType()];
}
...
}
Bien que cela fonctionne bien, je me demande s'il y a un plus élégant ou façon intégrée de le faire?
Ceci est similaire à Can I have different copies of a static variable for each different type of inheriting class, mais je n'ai aucun contrôle sur les sous-classes
Vous pourriez probablement le faire en piratant un 'Dictionary' et en appelant 'GetType()', mais ce serait horrible ... –
Pour que les membres statiques virtuels/abstraits seraient bien. voir (recherche de "membre statique virtuel") –
VolkerK
pourquoi ne pas le rendre NON statique? – BlackTigerX