反射遍历List<>泛型类型_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 反射遍历List<>泛型类型

反射遍历List<>泛型类型

 2013/8/13 19:08:10  PongorXi  博客园  我要评论(0)
  • 摘要:有这样一个需求:一个实体模型,有一个属性是一个实体列表List<OrderDetail>,我需要对实体列表遍历,对每一个实体的属性根据属性特性进行验证,如是否为必填等等,如下一个反射方法能满足需求。publicclassOrderObj{publicOrderorder{get;set;}publicList<OrderDetail>orderDetail{get;set;}}publicclassOrder{publicstringOrderID{get;set;}
  • 标签:list 遍历 反射 泛型

有这样一个需求:一个实体模型,有一个属性是一个实体列表List<OrderDetail>,我需要对实体列表遍历,对每一个实体的属性根据属性特性进行验证,如是否为必填等等,如下一个反射方法能满足需求。

public class OrderObj
{
    public Order order {get;set;}
    public List<OrderDetail> orderDetail {get;set;}   
}

public class Order
{
    public string OrderID {get;set;}
}

public class OrderDetail
{
    [Required]
    public string ID {get;set;}
    [Number]
    public string Quantity {get;set}
}

 

示例代码:

public void MyMethod(object obj)
{
    foreach (PropertyInfo propertyInfo in obj.GetType().GetProperties())
    {
        object value = propertyInfo.GetValue(obj, null);
        if (propertyInfo.PropertyType.IsGenericType)
        {
            Type objType = value.GetType();
            int count = Convert.ToInt32(objType.GetProperty("Count").GetValue(value, null));
            for (int i = 0; i < count; i++)
            {
                object listItem = objType.GetProperty("Item").GetValue(value, new object[] { i });
            }
        }
    }
}

 

发表评论
用户名: 匿名