我正在测试这样的对象:
if (item is IDictionary<object, object>)
但这并不匹配所有其他类型<sting, object>, <int, string>
等组合...
我只是想知道它是否已经实现了接口,无论它使用什么泛型类型。
我找到了一个例子,说可以做类似的事情:
dictionary.GetType().GetInterfaces().Any(x => x.GetGenericTypeDefinition == typeof(IDictionary<>));
但是我仍然必须指定类型签名,否则它无效。
是否可以创建一个检查接口而不必指定类型的语句?
答案 0 :(得分:7)
你很接近,你真的需要修改语法:
dictionary.GetType().GetInterfaces().Any(x => x.GetGenericTypeDefinition() == typeof(IDictionary<,>))
请注意GetGenericTypeDefinition之后的()
以及<>
内的逗号。