Ejemplo n.º 1
0
        private static Dictionary <Type, ScriptValue> m_UserdataTypes = new Dictionary <Type, ScriptValue>();  //所有的类集合
        public static UserdataType GetType(Type type)
        {
            UserdataType value;

            if (m_Types.TryGetValue(type, out value))
            {
                return(value);
            }
            return(m_Types[type] = new UserdataTypeReflect(type));
        }
Ejemplo n.º 2
0
        private static Dictionary <Type, ScriptValue> m_UserdataTypes = new Dictionary <Type, ScriptValue>();           //所有的类集合

        public static UserdataType GetType(Type type)
        {
            if (m_Types.TryGetValue(type, out var value))
            {
                return(value);
            }
            var userdataType = new UserdataTypeReflect(type);

            LoadExtension(type, userdataType);
            return(m_Types[type] = userdataType);
        }
Ejemplo n.º 3
0
 private static void LoadExtension(Type type, UserdataTypeReflect userdataType)
 {
     foreach (var extensionType in m_ExtensionType)
     {
         var methods = extensionType.GetMethods(Script.BindingFlag);
         foreach (var method in methods)
         {
             if (!Util.IsExtensionMethod(method))
             {
                 continue;
             }
             //第1个参数就是 this 类
             if (method.GetParameters()[0].ParameterType.IsAssignableFrom(type))
             {
                 userdataType.AddExtensionMethod(method);
             }
         }
     }
 }