Sprawdź, czy obiekt implementuje ogólny interfejs dla dowolnego typu ogólnego

Chcę przetestować obiekt, aby zobaczyć, czy implementujeIDictionary<TKey,TValue> ale nie obchodzi mnie coTKey iTValue są

Mogę sprawdzić, czy jest konkretnym przykładem strukturyDictionary<,> lubię to:

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

ale nie mogę wymyślić sposobu na przetestowanie czegoś, co implementujeIDictionary<,>. Ta technika nie działa dla interfejsu;IsAssignableFrom zwraca false, jeśli testuję względem ogólnego typu bazyIDictionary<,>, co wydaje się dziwne, ponieważ działa dla konkretnego typu.

Normalnie używałbyśis przetestować, czy coś implementuje interfejs, ale oczywiście działa to tylko wtedy, gdy chcę przetestować konkretny interfejs ogólny. Albo po prostu przetestuję wspólny interfejs przodków, ale w przeciwieństwie do innych ogólnych struktur danych, takich jakIList<> iICollection<>, nie ma unikalnego nie-ogólnego interfejsu, z którego ogólnyIDictionary<TKey,TValue> dziedziczy.

questionAnswers(1)

yourAnswerToTheQuestion