Пример #1
0
 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());
     }
 }
Пример #2
0
 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();
     }
 }
Пример #4
0
 bool Check(FieldInfo fieldInfo)
 {
     return(!fieldInfo.IsDefined(ScorpioUnGenerate, true) && (m_ClassFilter == null || m_ClassFilter.Check(this, m_Type, fieldInfo)));
 }