有这样一个需求:一个实体模型,有一个属性是一个实体列表List<OrderDetail>,我需要对实体列表遍历,对每一个实体的属性根据属性特性进行验证,如是否为必填等等,如下一个反射方法能满足需求。
public class OrderObj{ public Order order { get;set;} public ListorderDetail { 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 }); } } }}