Supposons que les définitions de types suivants :
Comment puis-je savoir si le type implémente l’interface générique
si seulement le type mutilé est disponible ?
Supposons que les définitions de types suivants :
Comment puis-je savoir si le type implémente l’interface générique
si seulement le type mutilé est disponible ?
Vous devez aller jusqu'à travers l'arbre d'héritage et de trouver toutes les interfaces pour chaque classe dans l'arbre, et de comparer typeof(IBar<>)
avec le résultat de l'appel d' Type.GetGenericTypeDefinition
si l'interface est générique. C'est un peu douloureux, certes.
Voir cette réponse et ces pour plus d'infos et le code.
public interface IFoo<T> : IBar<T> {}
public class Foo : IFoo<Foo> {}
var implementedInterfaces = typeof( Foo ).GetInterfaces();
foreach( var interfaceType in implementedInterfaces ) {
if ( false == interfaceType.IsGeneric ) { continue; }
var genericType = interfaceType.GetGenericTypeDefinition();
if ( genericType == typeof( IFoo<> ) ) {
// do something !
break;
}
}
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.