/// <summary> /// 取得指定类的所有数据属性。 /// 静态缓存。 /// </summary> /// <param name="t">实体类型</param> /// <returns>所有数据属性对象列表</returns> public static FieldItem[] AllFields(Type t) { if (_AllFields.ContainsKey(t)) { return(_AllFields[t]); } lock (_AllFields) { if (_AllFields.ContainsKey(t)) { return(_AllFields[t]); } List <FieldItem> cFields = new List <FieldItem>(); PropertyInfo[] pis = t.GetProperties(); List <String> names = new List <String>(); foreach (PropertyInfo item in pis) { FieldItem field = new FieldItem(); field.Property = item; field.Column = BindColumnAttribute.GetCustomAttribute(item); field.DataObjectField = DataObjectAttribute.GetCustomAttribute(item, typeof(DataObjectFieldAttribute)) as DataObjectFieldAttribute; cFields.Add(field); if (names.Contains(item.Name)) { throw new Exception(String.Format("{0}类中出现重复属性{1}", t.Name, item.Name)); } names.Add(item.Name); } _AllFields.Add(t, cFields.ToArray()); return(cFields.ToArray()); } }
/// <summary>构造函数</summary> /// <param name="table"></param> /// <param name="property"></param> public FieldItem(TableItem table, PropertyInfo property) { if (property == null) { throw new ArgumentNullException("property"); } _Table = table; _Property = property; _Column = BindColumnAttribute.GetCustomAttribute(_Property); _DataObjectField = DataObjectAttribute.GetCustomAttribute(_Property, typeof(DataObjectFieldAttribute)) as DataObjectFieldAttribute; _Description = DescriptionAttribute.GetCustomAttribute(_Property, typeof(DescriptionAttribute)) as DescriptionAttribute; }