2009-12-24 113 views
23

我有一個類有List<float>List<int>等現在的一些屬性。現在我通過反射查詢這個類的屬性,以便我得到PropertyInfo的列表。如何比較泛型?

我想過濾類型爲List<>的類型。但比較

propertyInfo.PropertyType == typeof(List<>) 

失敗。

我可以通過比較名字,即下面的對比工作解決這個問題:

propertyInfo.PropertyType.Name == typeof(List<>).Name 

我覺得應該有更好的方式來比較通用的類型。任何線索?

回答

49

您可以使用:

Type type = propertyInfo.PropertyType; 
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>)) 
{ 
    ... 
}