Проверьте, реализует ли объект универсальный интерфейс для любого универсального типа

Я хочу проверить объект, чтобы увидеть, если он реализуетIDictionary<TKey,TValue> но мне все равно, чтоTKey а такжеTValue являются.

Я могу проверить, является ли конкретный экземпляр фреймворкаDictionary<,> как это:

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

но я не могу придумать способ проверить что-то, что реализуетIDictionary<,>, Этот метод не работает для интерфейса;IsAssignableFrom возвращать false, если я проверяю общий базовый типIDictionary<,>, который кажется странным, поскольку он работает для конкретного типа.

Обычно вы бы использовалиis проверить, реализует ли что-то интерфейс, но, конечно, это работает, только если я хочу проверить конкретный общий интерфейс. Или я бы просто протестировал общий интерфейс предков, но в отличие от других общих структур данных, таких какIList<> а такжеICollection<>нет уникального неуниверсального интерфейса, из которогоIDictionary<TKey,TValue> наследует.

Ответы на вопрос(1)

Ваш ответ на вопрос