Exemple #1
0
 private void CheckInterface(Type type, TypeConfig config)
 {
     foreach (var it in type.GetInterfaces())
     {
         config.Interfaces.Add(it.GetTypeName());
     }
 }
Exemple #2
0
 /// <summary>
 /// 读取类配置
 /// </summary>
 /// <param name="type"></param>
 /// <param name="config"></param>
 /// <returns></returns>
 private void AnalyzeEnum(Type type, TypeConfig config)
 {
     config.NetType = NetType.Enum;
     foreach (var field in type.GetFields())
     {
         config.Fields.Add(field.Name, GetConfig(type, field));
     }
 }
Exemple #3
0
        /// <summary>
        /// 读取类配置
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        private TypeConfig Analyze(Type type)
        {
            TypeConfig config = new TypeConfig
            {
                Name       = type.Name,
                ConfigType = type,
                TypeName   = type.GetTypeName()
            };

            GetInfo(config, type);
            if (type.IsEnum)
            {
                AnalyzeEnum(type, config);
                return(config);
            }
            CheckInterface(type, config);
            if (type.IsInterface)
            {
                config.NetType = NetType.Interface;
            }
            else
            {
                GetConstructors(type, config);
                config.NetType = type.IsClass ? NetType.Class : NetType.Struct;
            }

            if (type.IsGenericType)
            {
                config.Generics = new List <string>();
                foreach (var gen in type.GetGenericArguments())
                {
                    config.Generics.Add(gen.GetTypeName());
                }
            }
            if (type.IsSupperInterface(typeof(System.Collections.IEnumerable)))
            {
                config.IsArray = true;
            }

            foreach (var field in type.GetFields(flag))
            {
                config.Fields.Add(field.Name, GetConfig(type, field));
            }
            foreach (var property in type.GetProperties(flag))
            {
                config.Properties.Add(property.Name, GetConfig(type, property));
            }
            foreach (var property in type.GetMethods(flag))
            {
                config.Methods.Add(GetConfig(type, property));
            }
            return(config);
        }
Exemple #4
0
        private void GetInfo(TypeConfig config, Type type)
        {
            if (type.BaseType != typeof(object))
            {
                config.BaseType = type.BaseType.GetTypeName();
            }
            var member = _helpXml.FirstOrDefault(p => p.Name == type.FullName);

            if (member != null)
            {
                config.Description = member.Summary;
                config.Caption     = member.DisplayName;
                config.Description = member.Remark ?? member.Summary;
            }
            GetExtendValue(type, config);
            CheckAttributes(config, type);
        }
Exemple #5
0
        private void GetConstructors(Type type, TypeConfig config)
        {
            var ctors = type.GetConstructors();
            int cnt   = 1;

            foreach (var method in ctors)
            {
                var info = new MethodConfig
                {
                    Name = $"ctor.{cnt++}"
                };
                foreach (var para in method.GetParameters())
                {
                    CheckParameter(para, info);
                }
                if (info.Argument.Count == 0)
                {
                    info.Argument = null;
                }
                config.Methods.Add(info);
            }
        }