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); } }