Пример #1
0
        public GenerateScorpioClass(Type type)
        {
            m_Type             = type;
            m_ScorpioClassName = "ScorpioClass_" + GetClassName(type);
            m_FullName         = ScorpioReflectUtil.GetFullName(m_Type);
            m_AllFields.AddRange(m_Type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy));
            m_AllEvents.AddRange(m_Type.GetEvents(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy));
            m_AllPropertys.AddRange(m_Type.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy));
            var methods = (m_Type.IsAbstract && m_Type.IsSealed) ? m_Type.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) : m_Type.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy);

            foreach (var method in methods)
            {
                string name = method.Name;
                //屏蔽掉 =重载函数 IsSpecialName 表示为特殊函数 运算符重载 这个值会为true
                if (method.IsSpecialName && name == "op_Implicit")
                {
                    continue;
                }
                //屏蔽掉 模版函数
                if (method.IsGenericMethod)
                {
                    continue;
                }
                //屏蔽掉 带有 ref 和 out 关键字参数的函数
                if (ScorpioReflectUtil.IsRetvalOrOut(method))
                {
                    continue;
                }
                m_AllMethods.Add(method);
            }
        }