如何比较泛型类型?

时间:2009-12-24 12:45:20

标签: c# generics

我有一个类,其中包含List<float>List<int>等类型的属性。现在我通过反射查询此类的属性,以便获得PropertyInfo的列表。

我想过滤List<>类型的类型。但比较

propertyInfo.PropertyType == typeof(List<>)

失败。

我可以通过比较名称来解决这个问题,即以下比较有效:

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

我认为应该有更好的方法来比较Generic类型。有线索吗?

1 个答案:

答案 0 :(得分:50)

您可以使用:

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