J'ai une classe générique comme ceci:Comment spécifier un type générique comme une restriction dans une méthode générique
class MyGenericClass<T> { }
D'autre part, j'ai une classe aggrégateur que j'utilise pour obtenir des instances singleton de MyGenericClass
et des classes dérivées, où chaque instance est identifiée par le type de classe concret et par le type de paramètre. Autrement dit, MyGenericClass<int>
est différent de MyGenericClass<string>
et de MyDerivedGenericClass<int>
; il y a une seule instance pour chacun d'eux.
Le membre principal de l'agrégateur est la méthode GetInstanceOf
, qui renvoie l'instance singleton du type spécifié. Le problème est que je veux spécifier le type comme un paramètre générique, mais je ne peux pas trouver un moyen de créer une restriction de type "le paramètre doit être de type MyGenericClass (ou dérivé) avec tout type de paramètre". En bref, je veux quelque chose comme ceci:
T GetInstanceOf<T>() where T : MyGenericClass<> //This does not compile
Alors, que puis-je faire? Y a-t-il un moyen de spécifier une telle restriction? La méthode GetInstanceOf<T>
renvoie effectivement T, non vide.
Je suis confus: pourquoi votre méthode * a-t-elle été déclarée comme étant nulle, mais * décrite * comme renvoyant une valeur? –
Vous avez raison, je l'ai mal écrit. C'est corrigé maintenant. Pardon. – Konamiman