是否可以查看对象是否继承了没有泛型类型参数的IDictionary?

时间:2015-05-01 18:36:21

标签: c#

我正在测试这样的对象:

if (item is IDictionary<object, object>)

但这并不匹配所有其他类型<sting, object>, <int, string>等组合...

我只是想知道它是否已经实现了接口,无论它使用什么泛型类型。

我找到了一个例子,说可以做类似的事情:

dictionary.GetType().GetInterfaces().Any(x => x.GetGenericTypeDefinition == typeof(IDictionary<>));

但是我仍然必须指定类型签名,否则它无效。

是否可以创建一个检查接口而不必指定类型的语句?

1 个答案:

答案 0 :(得分:7)

你很接近,你真的需要修改语法:

dictionary.GetType().GetInterfaces().Any(x => x.GetGenericTypeDefinition() == typeof(IDictionary<,>))

请注意GetGenericTypeDefinition之后的()以及<>内的逗号。