Détermination de l'implémentation d'une interface générique à partir d'un type mungled
Dans les scénarios où seul un type mutilé représentant une classe est disponible, déterminer s'il implémente une interface générique peut être difficile. Prenons l'exemple suivant :
public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {}
La question se pose : comment savoir si le type Foo implémente l'interface générique IBar
Solution :
Une approche pour résoudre cette requête consiste à utiliser les méthodes IsGenericType et GetGenericTypeDefinition disponibles en C#. Ces méthodes permettent l'examen et la manipulation de types génériques.
// Assuming 'foo' represents the mangled type of 'Foo<T>' bool isBar = foo.GetType().IsGenericType && foo.GetType().GetGenericTypeDefinition() == typeof(IBar<>);
Ce code évalue si le type mutilé est générique et compare sa définition de type générique avec la définition de type d'interface attendue typeof(IBar<>). Si les deux conditions sont remplies, la variable isBar est définie sur true, indiquant l'implémentation du type de l'interface générique.
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!