public static Entity_Table Get(Type _Type) { var _Entity_Table = new Entity_Table(); var _TableAttr = ReflexHelper.GetTableAttribute(_Type); _Entity_Table.TableName = _TableAttr == null ? _Type.Name : _TableAttr.TableName; var _Fields = ReflexHelper.GetPropertyInfos(_Type); foreach (var item in _Fields) { var _FieldAttribute = (Attribute.GetCustomAttribute(item, typeof(FieldAttribute)) as FieldAttribute); if (_FieldAttribute == null) { continue; } var _FieldInfo = new Entity_FieldInfo() { Alias = _FieldAttribute.Alias, FieldName = item.Name, FieldType = item.PropertyType, IsIdentity = _FieldAttribute.IsIdentity, IsIgnore = _FieldAttribute.IsIgnore, IsPrimaryKey = _FieldAttribute.IsPrimaryKey }; if (_FieldAttribute.IsPrimaryKey) { _Entity_Table.KeyFieldName = _FieldInfo.FieldName; _Entity_Table.KeyFieldInfo = _FieldInfo; } _Entity_Table.Fields.Add(_FieldInfo); } return(_Entity_Table); }
/// <summary> /// 对象 转换为 MemberInitExpression /// </summary> /// <param name="_type"></param> /// <returns></returns> public static MemberInitExpression MemberInit <T>(T _entity) { var proInfo = ReflexHelper.GetPropertyInfos(typeof(T)); var list = new List <MemberBinding>(); foreach (var item in proInfo) { list.Add(Expression.Bind(item, Expression.Constant(item.GetValue(_entity), item.PropertyType))); } var newExpr = Expression.New(typeof(T)); return(Expression.MemberInit(newExpr, list)); }