Teste se um objeto implementa uma interface genérica para qualquer tipo genérico

Eu quero testar um objeto para ver se ele implementaIDictionary<TKey,TValue> mas eu não me importo com o queTKey eTValue está.

Posso testar se é uma instância concreta do frameworkDictionary<,> como isso:

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

mas não consigo pensar em uma maneira de testar algo que implementaIDictionary<,>. Essa técnica não funciona para a interface;IsAssignableFrom return false se eu testar contra o tipo base genéricoIDictionary<,>, o que parece estranho, já que funciona para o tipo concreto.

Normalmente você usariais para testar se algo implementa uma interface, mas é claro que isso só funciona se eu quiser testar uma interface genérica específica. Ou gostaria apenas de testar uma interface ancestral comum, mas, ao contrário de outras estruturas de dados genéricas, comoIList<> eICollection<>, não existe uma interface não genérica única a partir da qual oIDictionary<TKey,TValue> herda.

questionAnswers(1)

yourAnswerToTheQuestion