Beispiel #1
0
 public GenerateScorpioInterface(Type type)
 {
     m_Type           = type;
     FullName         = ScorpioReflectUtil.GetFullName(m_Type);
     ScorpioClassName = "ScorpioInterface_" + ScorpioReflectUtil.GetGenerateClassName(type);
     Methods          = new List <MethodInfo>(type.GetMethods());
 }
Beispiel #2
0
        }                                               //是否是结构体
        public GenerateScorpioClass(Type type)
        {
            m_Type           = type;
            IsStruct         = !type.IsClass;
            FullName         = ScorpioReflectUtil.GetFullName(m_Type);
            ScorpioClassName = "ScorpioClass_" + ScorpioReflectUtil.GetGenerateClassName(type);
            AllFields.AddRange(m_Type.GetFields(ScorpioReflectUtil.BindingFlag));
            AllEvents.AddRange(m_Type.GetEvents(ScorpioReflectUtil.BindingFlag));
            var propertys = m_Type.GetProperties(ScorpioReflectUtil.BindingFlag);

            foreach (var property in propertys)
            {
                //如果是 get 则参数是0个  set 参数是1个  否则就可能是 [] 的重载
                if ((property.CanRead && property.GetGetMethod().GetParameters().Length == 0) ||
                    (property.CanWrite && property.GetSetMethod().GetParameters().Length == 1))
                {
                    AllPropertys.Add(property);
                }
            }
            var methods = (m_Type.IsAbstract && m_Type.IsSealed) ? m_Type.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) : m_Type.GetMethods(ScorpioReflectUtil.BindingFlag);

            foreach (var method in methods)
            {
                //屏蔽掉 模版函数 模板函数只能使用反射
                if (!ScorpioReflectUtil.CheckGenericMethod(method))
                {
                    continue;
                }
                AllMethods.Add(method);
            }
        }