private int UnregisterTableInternal(LuaState luaState) { try { if (LuaLib.LuaGetMetatable(luaState, 1) != 0) { LuaLib.LuaPushString(luaState, "__index"); LuaLib.LuaGetTable(luaState, -2); object obj = GetRawNetObject(luaState, -1); if (obj == null) { ThrowError(luaState, "unregister_table: arg is not valid table"); } var luaTableField = obj.GetType().GetField("__luaInterface_luaTable"); if (luaTableField == null) { ThrowError(luaState, "unregister_table: arg is not valid table"); } luaTableField.SetValue(obj, null); LuaLib.LuaPushNil(luaState); LuaLib.LuaSetMetatable(luaState, 1); LuaLib.LuaPushString(luaState, "base"); LuaLib.LuaPushNil(luaState); LuaLib.LuaSetTable(luaState, 1); } else { ThrowError(luaState, "unregister_table: arg is not valid table"); } } catch (Exception e) { ThrowError(luaState, e.Message); } return(0); }