反射遍歷List<>泛型類型

有這樣一個需求:一個實體模型,有一個屬性是一個實體列表List<OrderDetail>,我須要對實體列表遍歷,對每個實體的屬性根據屬性特性進行驗證,如是否爲必填等等,以下一個反射方法能知足需求。ui

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}
}

 

示例代碼:spa

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 });
            }
        }
    }
}
相關文章
相關標籤/搜索