Heim >Backend-Entwicklung >C++ >Wie kann ich feststellen, ob ein generischer Typ eine bestimmte generische Schnittstelle implementiert, indem ich nur seinen Typnamen verwende?

Wie kann ich feststellen, ob ein generischer Typ eine bestimmte generische Schnittstelle implementiert, indem ich nur seinen Typnamen verwende?

Linda Hamilton
Linda HamiltonOriginal
2025-01-07 07:05:40741Durchsuche

How Can I Determine if a Generic Type Implements a Specific Generic Interface Using Only its Type Name?

Bestimmen der Schnittstellenimplementierung eines generischen Typs

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 implementiert die generische Schnittstelle IBar wenn nur der verstümmelte Typname verfügbar ist.

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. Wenn eine solche Schnittstelle vorhanden ist, bedeutet dies, dass Foo implementiert 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn