--[[ @实体对象桥接类 --]] BridgeClass = BridgeClass or BaseClass() local BridgeClass = BridgeClass function BridgeClass:__init(obj) self.obj = obj self.base = {} --print("BridgeClass:__init()",self._class_type._source) for k, v in pairs(self._class_type) do if k ~= "__init" and k ~= "__delete" and k ~= "New" then if type(v) == "function" and self.obj[k] then --print("BridgeClass:__init() 替换",k) self.base[k] = self.obj[k] self.obj[k] = function(obj,...) return self[k](self,...) end end end end local function obj_get(t, k) return self.obj[k] end local function obj_set(t, k, v) self.obj[k] = v end setmetatable(self.base, {__index = obj_get,__newindex = obj_set}) local function base_get(t, k) local ret = self._class_type[k] if ret == nil then --print("base_get base",k) ret = self.base[k] end return ret end local function base_set(t, k, v) if self.base[k] ~= nil then --print("base_set base",k,v) self.base[k] = v else --print("base_set self",k,v) rawset(self,k,v) end end setmetatable(self, {__index = base_get,__newindex = base_set}) end function BridgeClass:__delete() if self.obj and not self.obj._use_delete_method then for k, v in pairs(self.base) do if k ~= "__init" and k ~= "__delete" and k ~= "New" then if self._class_type[k] and self.obj[k] then self.obj[k] = v --print("BridgeClass:__delete() 还原",k) end end end end end