Heim >Backend-Entwicklung >C++ >Wie kann ich feststellen, ob ein generischer Typ eine bestimmte generische Schnittstelle implementiert, indem ich nur seinen Typnamen verwende?
Problem:
Beachten Sie diese Typdefinitionen:
public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {}
Ziel:
Wie kann man feststellen, ob der Typ Foo
Antwort:
Unter Verwendung des von TcKs vorgeschlagenen Ansatzes können wir die folgende LINQ-Abfrage verwenden:
bool isBar = foo.GetType().GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IBar<>));
Diese Abfrage prüft, ob eine der implementierten Schnittstellen der foo-Variablen ein generischer Typ ist und ihre generische Typdefinition mit der von übereinstimmt IBar
Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob ein generischer Typ eine bestimmte generische Schnittstelle implementiert, indem ich nur seinen Typnamen verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!