Re:
T.A();
Vous ne pouvez pas appeler des méthodes statiques du paramètre de type, si c'est ce que vous voulez dire. Vous feriez mieux de refactoriser cela comme une méthode d'instance de T
, peut-être avec une contrainte générique (where T : SomeTypeOrInterface
, avec SomeTypeOrInterface
définissant A()
). Une autre alternative est dynamic
, ce qui permet de dactylographie de instance méthodes (via signature).
Si vous voulez dire que le T
est connu que lors de l'exécution (comme Type
), alors vous auriez besoin:
typeof(GenericClass<>).MakeGenericType(type).GetMethod(...).Invoke(...);
Est-il possible d'utiliser la classe publique GenericClass où T: SomeType1, SomeType2, new() –
Dusan
Non, vous ne pouvez spécifier qu'une seule classe de base (vous pouvez créer une SomeTypeBase, spécifier cela comme contrainte de type et laisser SomeType1 et SomeType3 en hériter Classe SomeTypeBase). – Peter