有這樣一個需求:一個實體模型,有一個屬性是一個實體列表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 }); } } } }