反射遍历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 });
            }
        }
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM