Existe-t-il un moyen de tester si T hérite/implémente une classe/interface ?
private void MyGenericClass<T> ()
{
if(T ... inherits or implements some class/interface
}
Existe-t-il un moyen de tester si T hérite/implémente une classe/interface ?
private void MyGenericClass<T> ()
{
if(T ... inherits or implements some class/interface
}
D'autres moyens de savoir si un objet o
hérite d'une classe ou implémente une interface est d'utiliser la fonction is
y as
opérateurs.
Si vous souhaitez uniquement savoir si un objet hérite d'une classe ou implémente une interface, la fonction is
retournera un résultat booléen :
bool isCompatibleType = (o is BaseType || o is IInterface);
Si vous souhaitez utiliser la classe héritée ou l'interface implémentée après votre test, la fonction as
L'opérateur effectuera un cast sûr, renvoyant une référence à la classe héritée ou à l'interface implémentée si elle est compatible ou nulle si elle ne l'est pas :
BaseType b = o as BaseType; // Null if d does not inherit from BaseType.
IInterface i = o as IInterface; // Null if d does not implement IInterface.
Si vous avez seulement le type T
puis utilisez la réponse de @nikeee.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.