Bestimmen, ob ein Typ einen generischen Schnittstellentyp aus einem verstümmelten Typ implementiert
Generische Schnittstellen und Klassen ermöglichen ein hohes Maß an Flexibilität und Typsicherheit Code, aber die Arbeit damit und die Überprüfung kann etwas umständlich sein. In diesem Artikel befassen wir uns mit einem spezifischen Problem: Ermitteln, ob ein Typ eine generische Schnittstelle implementiert, wenn nur der verstümmelte Typ verfügbar ist.
Um ein Beispiel zu geben, betrachten wir die folgenden Typdefinitionen:
public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {}
Die Frage ist, wie können wir feststellen, ob der Typ Foo
Der häufig empfohlene Weg, mit dieser Situation umzugehen, ist die Verwendung von Reflektion. So können Sie vorgehen:
// Assume a mangled type 'typeof(Foo)' is provided. Type fooType = typeof(Foo); // Check if 'Foo' implements the generic interface 'IBar<T>'. bool isBar = fooType.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IBar<>)); Console.WriteLine(isBar);
Diese LINQ-Abfrage überprüft die von Foo implementierten Schnittstellen und konzentriert sich ausschließlich auf generische Schnittstellen. Wenn eine dieser generischen Schnittstellen mit der Definition von IBar<> übereinstimmt, wird „true“ zurückgegeben.
Durch die Nutzung dieses Ansatzes können Sie effektiv feststellen, ob ein Typ eine bestimmte generische Schnittstelle implementiert, selbst wenn es sich um verstümmelte Typen handelt. Bereitstellung wertvoller Erkenntnisse für Ihre Anforderungen an Typ-Introspektion und -Analyse.
Das obige ist der detaillierte Inhalt vonWie kann ich anhand seines verstümmelten Typs feststellen, ob ein Typ eine generische Schnittstelle implementiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!