string GetFiledInfo(Type type, IFiledHandler Handler) { var fileds = FilterFields(type.GetFields(bindingAttr)); var properties = FilterProperties(type.GetProperties(bindingAttr)); StringBuilder sb = new StringBuilder(); int i = 0; var count = fileds.Count + properties.Count; Action <string> AppendString = (string str) => { if (i == count - 1) { sb.Append(str); } else { sb.AppendLine(str); } }; for (; i < fileds.Count; i++) { var field = fileds[i]; var ty = field.FieldType; DealMemberType(Handler, ty, field, AppendString); } for (; i < count; i++) { var property = properties[i - fileds.Count]; var ty = property.PropertyType; DealMemberType(Handler, ty, property, AppendString); } return(sb.ToString()); }
private void DealMemberType(IFiledHandler Handler, Type ty, MemberInfo field, Action <string> AppendString) { if (ty.IsGenericType) { var argus = ty.GetGenericArguments(); foreach (var arg in argus) { if (IsUserDefineClass(arg)) { AddType(arg); } } string str = ""; if (IsList(ty)) { str = Handler.DealList(ty, field); } else if (IsDict(ty)) { str = Handler.DealDic(ty, field); } AppendString(str); } else if (IsArray(ty)) { var paramT = ty.GetElementType(); if (IsUserDefineClass(paramT)) { AddType(paramT); } string str = Handler.DealArray(ty, field); AppendString(str); } else if (IsUserDefineClass(ty)) { AddType(ty); string str = Handler.DealUserClass(ty, field); AppendString(str); } else if (ty.IsEnum) { string str = Handler.DealEnum(ty, field); AppendString(str); } else { //structs var str = Handler.DealStructOrString(ty, field); AppendString(str); } }
string GetFiledInfo(List <FieldInfo> fileds, IFiledHandler Handler) { StringBuilder sb = new StringBuilder(); int i = 0; var count = fileds.Count; Action <string> AppendString = (string str) => { if (i == count - 1) { sb.Append(str); } else { sb.AppendLine(str); } }; for (; i < count; i++) { var field = fileds[i]; var ty = field.FieldType; if (ty.IsGenericType) { var argus = ty.GetGenericArguments(); foreach (var arg in argus) { if (IsUserDefineClass(arg)) { AddType(arg); } } string str = ""; if (IsList(ty)) { str = Handler.DealList(ty, field); } else if (IsDict(ty)) { str = Handler.DealDic(ty, field); } AppendString(str); } else if (IsArray(ty)) { var paramT = ty.GetElementType(); if (IsUserDefineClass(paramT)) { AddType(paramT); } string str = Handler.DealArray(ty, field); AppendString(str); } else if (IsUserDefineClass(ty)) { AddType(ty); string str = Handler.DealUserClass(ty, field); AppendString(str); } else if (ty.IsEnum) { string str = Handler.DealEnum(ty, field); AppendString(str); } else { //structs var str = Handler.DealStructOrString(ty, field); AppendString(str); } } return(sb.ToString()); }