2009-09-24 79 views
6

我試圖檢查一個類型是否實現了泛型集合< T>接口,因爲這是我的任何泛型集合的基接口。檢測類型是否實現ICollection <T>

下面的代碼不起作用

GetType(ICollection(Of)).IsAssignableFrom(
    objValue.GetType().GetGenericTypeDefinition()) 

什麼是檢測如果一個類型實現了一個通用接口的好辦法?

回答

24
CustomCollection c = new CustomCollection(); 

bool implementICollection = c.GetType().GetInterfaces() 
          .Any(x => x.IsGenericType && 
          x.GetGenericTypeDefinition() == typeof(ICollection<>)); 
+0

這是正確答案;我測試過了 – Graviton 2009-09-24 14:47:35

1

的替代他人如下:

if (MyObject is ICollection<T>) 
    ... 

注:如果T是在編譯時已知這隻會工作。

相關問題