6
我想测试一个对象以查看它是否实现IDictionary<TKey,TValue>
但我不在乎TKey
和TValue
是什么。测试某个对象是否为任何通用类型实现了通用接口
我可以测试是否是框架Dictionary<,>
的这样一个具体的实例:
bool isDict = type.IsGenericType &&
(typeof(Dictionary<,>).IsAssignableFrom(type.GetGenericTypeDefinition());
,但我不能想办法来测试的东西,实现IDictionary<,>
。这种技术对接口不起作用; IsAssignableFrom
如果我针对通用基类型IDictionary<,>
进行测试,则返回false,这看起来很奇怪,因为它适用于具体类型。
通常你会使用is
测试某实现了一个接口,当然如果我想测试一个特定的通用接口,这仅适用。或者,我只想测试一个共同的祖先接口,但不像其他通用数据结构,如IList<>
和ICollection<>
,没有独特的非一般的接口,一般IDictionary<TKey,TValue>
继承。
像。我如何忽视GetInterfaces? –