OK, ce titre est un peu floue, mais je ne peux pas penser à une meilleure façon de le mettre, autre que l'expliquer ...Est-il possible de détecter le contexte de classe dans une méthode statique héritée?
Dire que j'ai une classe Animal
, avec une méthode statique, générique:
public static T Create<T>() where T : Animal {
// stuff to create, initialize and return an animal of type T
}
Et je Dog
, les sous-classes Cat
, Hamster
etc. afin d'obtenir un Dog
, je peux écrire:
Dog d = Animal.Create<Dog>();
o r
Dog d = Dog.Create<Dog>();
ce qui est vraiment la même chose. Mais il semble assez bête d'avoir à écrire Dog
tant de fois, puisque j'appelle déjà la méthode statique à travers la sous-classe Dog
.
Pouvez-vous penser à une façon intelligente d'écrire une méthode Create()
dans la classe de base pour que je puisse invoquer
Dog d = Dog.Create();
Cat c = Cat.Create();
Hamster h = Hamster.Create();
sans écrire une méthode Create()
dans chacune des sous-classes?
Vous voudrez probablement limiter 'T' à Animals:' class Animal où T: Animal ' –
dtb
@dtb: Bien sûr! Réponse mise à jour, merci. –
Le code à l'intérieur de Create() appellera des méthodes virtuelles/abstraites, c'est ainsi qu'il créera des instances de types dérivés. –