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