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