制作类型集合并检查它的最佳方法

时间:2012-04-23 07:03:36

标签: c# .net reflection

如何创建一个可以存储数据类型的集合(比如字符串,日期时间,小数等等)?并使用此集合进行比较:

if (pi.PropertyType.IsIn ([how can check against the collection of type) //where pi is a property info]))
{

}

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

List<Type> types = new List<Type> {typeof(string), typeof(int)};
if (types.Contains(pi.PropertyType))
{
  //do stuff
}

答案 1 :(得分:0)

希望我能正确理解你的问题。首先,需要更精确地定义集合类型。以下是我将要使用的内容:

  • 收藏品是通用的

  • 集合正在实施其中一个标准集合界面,如IList<T>ICollection<T>IEnumerable<T>。在此示例中,集合类型是派生自IEnumerable<T>

  • 的类型

要发现类型是否是集合,您必须使用GetInterfaces()获取它实现的接口,只需使用IsGenericType查看泛型接口,然后获取泛型类型(即从{{1开始)使用IList<String>

进行IList<>
GetGenericTypeDefinition()