private static void RegisterTypeFuncs(Type type) { MethodInfo[] mis = type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); foreach (var mi in mis) { var attr = (LuaFunctionAttribute)Attribute.GetCustomAttribute(mi, typeof(LuaFunctionAttribute)); if (attr != null) { var documentation = (LuaDocumentationAttribute)Attribute.GetCustomAttribute(mi, typeof(LuaDocumentationAttribute)); var example = (LuaExampleAttribute)Attribute.GetCustomAttribute(mi, typeof(LuaExampleAttribute)); var del = BindingHelpers.CreateDelegate(mi); string name = attr.Name ?? mi.Name; BindingHelpers.CreateCallbackItem(callbackItems, name, del, documentation?.Data ?? "", example?.Data ?? ""); //callbackItems[name] = new CallbackFunc(name, del, documentation?.Data ?? "", example?.Data ?? ""); } } }
private void RegisterObjectFuncs(object target) { if (target == null) { throw new ArgumentNullException(nameof(target)); } Type type = target.GetType(); MethodInfo[] mis = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (var mi in mis) { var attr = (LuaFunctionAttribute)Attribute.GetCustomAttribute(mi, typeof(LuaFunctionAttribute)); if (attr != null) { var documentation = (LuaDocumentationAttribute)Attribute.GetCustomAttribute(mi, typeof(LuaDocumentationAttribute)); var example = (LuaExampleAttribute)Attribute.GetCustomAttribute(mi, typeof(LuaExampleAttribute)); var del = BindingHelpers.CreateDelegate(mi, target); string name = attr.Name ?? mi.Name; BindingHelpers.CreateCallbackItem(callbackItems, name, del, documentation?.Data ?? "", example?.Data ?? ""); //callbackItems[name] = new CallbackFunc(name, del, documentation?.Data ?? "", example?.Data ?? ""); } } }