我正在尝试检查类型是否实现了通用ICollection< T> interface,因为这是我的任何通用集合的基本接口。
以下代码不起作用
GetType(ICollection(Of)).IsAssignableFrom(
objValue.GetType().GetGenericTypeDefinition())
检测类型是否实现通用接口的好方法是什么?
答案 0 :(得分:25)
CustomCollection c = new CustomCollection();
bool implementICollection = c.GetType().GetInterfaces()
.Any(x => x.IsGenericType &&
x.GetGenericTypeDefinition() == typeof(ICollection<>));
答案 1 :(得分:1)
其他人的替代方案如下:
if (MyObject is ICollection<T>)
...
注意:这仅在编译时知道T
时才有效。