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);
            }
        }
Example #3
0
        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());
        }