void Init() { { m_Fields.Clear(); foreach (var field in m_AllFields) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, field)) { continue; } m_Fields.Add(field); } m_Fields.Sort(new ComparerFieldInfo()); } { m_Events.Clear(); foreach (var eve in m_AllEvents) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, eve)) { continue; } m_Events.Add(eve); } m_Events.Sort(new ComparerEventInfo()); } { m_Propertys.Clear(); foreach (var property in m_AllPropertys) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, property)) { continue; } m_Propertys.Add(property); } m_Propertys.Sort(new ComparerPropertyInfo()); } { m_Methods.Clear(); foreach (var method in m_AllMethods) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, method)) { continue; } m_Methods.Add(method); } m_Methods.Sort(new ComparerMethodInfo()); } }
void Init() { { m_Fields.Clear(); foreach (var field in m_AllFields) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, field)) { continue; } m_Fields.Add(field); } m_Fields.Sort(new ComparerFieldInfo()); } { m_Events.Clear(); foreach (var eve in m_AllEvents) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, eve)) { continue; } m_Events.Add(eve); } m_Events.Sort(new ComparerEventInfo()); } { m_Propertys.Clear(); foreach (var property in m_AllPropertys) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, property)) { continue; } m_Propertys.Add(property); } m_Propertys.Sort(new ComparerPropertyInfo()); } { m_Methods.Clear(); foreach (var method in m_AllMethods) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, method)) { continue; } bool check = true; foreach (var property in m_AllPropertys) { if (property.GetGetMethod() == method || property.GetSetMethod() == method) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, property)) { check = false; break; } } } if (check) { foreach (var eve in m_AllEvents) { if (eve.GetAddMethod() == method || eve.GetRemoveMethod() == method) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, eve)) { check = false; break; } } } } if (check) { m_Methods.Add(method); } } m_Methods.Sort(new ComparerMethodInfo()); } }
void Init() { { m_Fields.Clear(); foreach (var field in m_AllFields) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, field)) { continue; } m_Fields.Add(field); } m_Fields.Sort(new ComparerFieldInfo()); } { m_Events.Clear(); foreach (var eve in m_AllEvents) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, eve)) { continue; } m_Events.Add(eve); } m_Events.Sort(new ComparerEventInfo()); } { m_Propertys.Clear(); foreach (var property in m_AllPropertys) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, property)) { continue; } m_Propertys.Add(property); } m_Propertys.Sort(new ComparerPropertyInfo()); } { m_Methods.Clear(); foreach (var method in m_AllMethods) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, method)) { continue; } bool check = true; var methodHandle = method.MethodHandle; //判断函数是不是 event add remove 函数 foreach (var eve in m_AllEvents) { if (eve.GetAddMethod().MethodHandle == methodHandle || eve.GetRemoveMethod().MethodHandle == methodHandle) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, eve)) { check = false; } break; } } if (check) { //判断函数是不是 get set 函数 foreach (var property in m_AllPropertys) { if (m_IsStruct && property.GetSetMethod()?.MethodHandle == methodHandle) { check = false; break; } else if (property.GetGetMethod()?.MethodHandle == methodHandle || property.GetSetMethod()?.MethodHandle == methodHandle) { if (m_ClassFilter != null && !m_ClassFilter.Check(this, m_Type, property)) { check = false; } break; } } } if (check) { m_Methods.Add(method); } } m_Methods.Sort(new ComparerMethodInfo()); } { m_ExtensionMethods.Clear(); foreach (var exten in m_Extensions) { var nameSpace = exten.Namespace; var methods = exten.GetMethods(Script.BindingFlag); foreach (var method in methods) { if (!Util.IsExtensionMethod(method)) { continue; } var paramterType = method.GetParameters()[0].ParameterType; //判断是模板函数 if (paramterType.IsGenericParameter && paramterType.BaseType != null && (m_Type == paramterType.BaseType || m_Type.IsSubclassOf(paramterType.BaseType))) { m_ExtensionMethods.Add(method); } else if (ScorpioReflectUtil.CheckGenericMethod(method) && (m_Type == paramterType || m_Type.IsSubclassOf(paramterType))) { m_ExtensionMethods.Add(method); } else { continue; } if (!string.IsNullOrWhiteSpace(nameSpace) && !m_ExtensionUsing.Contains(nameSpace)) { m_ExtensionUsing.Add(nameSpace); } } } m_ExtensionUsing.Sort(); m_ExtensionMethods.Sort(new ComparerMethodInfo()); } { m_MethodNames.Clear(); foreach (var method in m_Methods) { string name = method.Name; if (m_MethodNames.Contains(name)) { continue; } m_MethodNames.Add(name); } foreach (var method in m_ExtensionMethods) { string name = method.Name; if (m_MethodNames.Contains(name)) { continue; } m_MethodNames.Add(name); } m_MethodNames.Sort(); } }
bool Check(FieldInfo fieldInfo) { return(!fieldInfo.IsDefined(ScorpioUnGenerate, true) && (m_ClassFilter == null || m_ClassFilter.Check(this, m_Type, fieldInfo))); }