Quelle est la façon la plus simple de tester si un objet implémente une interface donnée?
Est-il possible de tester si une classe implémente une interface donnée?
Quelle est la façon la plus simple de tester si un objet implémente une interface donnée?
Est-il possible de tester si une classe implémente une interface donnée?
À l'aide de l' is
ou as
des opérateurs de la bonne façon, si vous connaissez le type d'interface au moment de la compilation et de disposer d'une instance du type de test. Quelque chose que personne d'autre ne semble avoir mentionné est Type.IsAssignableFrom
:
if( typeof(IMyInterface).IsAssignableFrom(someOtherType) )
{
}
Je pense que c'est beaucoup plus lisible qu'en regardant à travers le tableau retourné par GetInterfaces
et a l'avantage de travailler pour les classes.
En outre, le test en utilisant le "est" de l'opérateur, vous pouvez décorer vos méthodes pour vous assurer que les variables passées à mettre en place une interface particulière, comme suit:
public static void BubbleSort<T>(ref IList<T> unsorted_list) where T : IComparable
{
//Some bubbly sorting
}
Je ne suis pas sûr de la version de .Net cela a été mis en œuvre de sorte qu'il peut ne pas fonctionner dans votre version.
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.