Testen Sie, ob ein Objekt eine generische Schnittstelle für einen generischen Typ implementiert

Ich möchte ein Objekt testen, um festzustellen, ob es implementiert istIDictionary<TKey,TValue> aber es ist mir egal wasTKey undTValue sind.

Ich kann testen, ob es sich um eine konkrete Instanz des Frameworks handeltDictionary<,> so was:

bool isDict = type.IsGenericType && 
    (typeof(Dictionary<,>).IsAssignableFrom(type.GetGenericTypeDefinition());

Aber ich kann mir keine Möglichkeit vorstellen, nach etwas zu suchen, das implementiert wirdIDictionary<,>. Diese Technik funktioniert nicht für die Benutzeroberfläche.IsAssignableFrom Gib false zurück, wenn ich mit dem generischen Basistyp testeIDictionary<,>, was seltsam erscheint, da es für den konkreten Typ funktioniert.

Normalerweise würden Sie verwendenis um zu testen, ob etwas eine Schnittstelle implementiert, aber das funktioniert natürlich nur, wenn ich für eine bestimmte generische Schnittstelle testen möchte. Oder ich würde nur auf eine gemeinsame übergeordnete Schnittstelle testen, aber im Gegensatz zu anderen generischen Datenstrukturen wieIList<> undICollection<>gibt es keine eindeutige nicht generische Schnittstelle, von der aus die generischeIDictionary<TKey,TValue> erbt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage