我想测试一个对象是否实现了
我可以像这样测试它是否是框架
IDictionary<TKey,TValue>
,但我不关心TKey
和TValue
是什么。我可以像这样测试它是否是框架
Dictionary<,>
的具体实例:bool isDict = type.IsGenericType &&
(typeof(Dictionary<,>).IsAssignableFrom(type.GetGenericTypeDefinition());
但我想不到一种测试实现了IDictionary<,>
的方法。这种技术对于接口不起作用;如果我针对泛型基类IDictionary<,>
进行测试,则IsAssignableFrom
将返回false,这似乎很奇怪,因为它对具体类型有效。
通常您会使用is
来测试是否实现了一个接口,但是当然,这仅适用于我想要测试特定的泛型接口的情况。或者我只是测试一个共同祖先接口,但与其他泛型数据结构(如IList<>
和ICollection<>
)不同,没有唯一的非泛型接口从中继承泛型IDictionary<TKey,TValue>
。