Я хочу протестировать объект, чтобы увидеть, реализует ли он IDictionary<TKey,TValue>
, но мне все равно, что TKey
и TValue
.Проверьте, реализует ли объект общий интерфейс для любого типа типа
я могу проверить, если это конкретный экземпляр структуры Dictionary<,>
как это:
bool isDict = type.IsGenericType &&
(typeof(Dictionary<,>).IsAssignableFrom(type.GetGenericTypeDefinition());
, но я не могу придумать способ, чтобы проверить что-то, что реализует IDictionary<,>
. Этот метод не работает для интерфейса; IsAssignableFrom
return false, если я тестирую базовый тип IDictionary<,>
, что кажется странным, поскольку оно работает для конкретного типа.
Обычно вы должны использовать is
, чтобы проверить, что-то реализует интерфейс, но, конечно, это работает только в том случае, если я хочу протестировать определенный общий интерфейс. Или я просто проверил бы общий интерфейс предков, но в отличие от других общих структур данных, таких как IList<>
и ICollection<>
, нет уникального не общего интерфейса, из которого наследуется общий IDictionary<TKey,TValue>
.
Вроде. Как я пропустил GetInterfaces? –