|
|
- --[[
- @实体对象桥接类
- --]]
-
- 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
|