/// <summary> /// /// </summary> /// <param name="allowParam"></param> /// <param name="_ParamList"></param> /// <param name="value"></param> /// <param name="memberInfo"></param> /// <param name="paramIndex"></param> /// <returns></returns> public virtual ParamInfo BuildParamInfo(bool allowParam, List <ParamInfo> _ParamList, object value, System.Reflection.MemberInfo memberInfo, ref int paramIndex) { //防止重复的列名命名 string name = BuildParamName(allowParam, false, memberInfo, paramIndex); Type entityType = memberInfo == null ? null : memberInfo.ReflectedType; ParamInfo p = new ParamInfo() { MemberName = string.Empty, Name = name, Value = value, }; while (true && _ParamList != null) { var existsParam = _ParamList.Where(q => q.Name == p.Name).FirstOrDefault(); if (existsParam != null) { paramIndex++; name = BuildParamName(allowParam, true, memberInfo, paramIndex); p = new ParamInfo() { MemberName = string.Empty, Name = name, Value = value, }; continue; } break; } Type propertyType = typeof(string); if (memberInfo != null) { propertyType = ((System.Reflection.PropertyInfo)memberInfo).PropertyType; p.MemberName = memberInfo.Name; p.ParameterDirection = memberInfo.GetParameterType(); } else if (value != null) { propertyType = value.GetType(); } int?size = memberInfo.GetSize(); if ((size.HasValue && size > 0) || (size == -1)) { p.Size = size; } if (propertyType == typeof(string)) { p.DbType = System.Data.DbType.AnsiString; } return(p); }