Déterminer si un type implémente un type d'interface générique spécifique
Supposons que vous ayez les définitions de type suivantes :
public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {}
Étant donné uniquement le type mutilé, comment pouvez-vous déterminer si le type Foo implémente l'interface générique IBar
Solution avec requête LINQ
Comme suggéré par TcKs, vous pouvez utiliser la requête LINQ suivante :
bool isBar = foo.GetType().GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IBar<>));
Ce La requête vérifie si l'une des interfaces implémentées de foo est un type générique qui correspond à l'attribut IBar
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!