原
原子
Unregistered / Unconfirmed
GUEST, unregistred user!
我对元类的理解不是很到位,有些问题要请教大家。
在一个系统中,我定义了一个关于数据库的基础类,TTabBase,然后数据库中的每张表的记录都定义了一个TTabBase的子类,如职员表Employee,和部门Department表,就定义成
TEmployee = Class(TTabBase);
TDepartment = Class(TTabBase);
这样系统中就有了多个TTabBase的子类。
我想定义一个数组,在不同的地方表示不同的子类列表。
如在处理职员表时,它是
ItemArray: array of TEmployee;
在处理部门表时,它是
ItemArray: array of TDepartment;
现在我的想法是,在一个通用的功能模块中,通过定义一个元类,将子类类型作为变量带进去,从而实现对不同子类的统一操作。
元类的定义和元类变量的定义:
TMetaClass = class of TTabBase;
var
MetaRec: TMetaClass;
这应该没有错吧,但是问题出在使用这个元类的使用上
我把上面的数组定义成
ItemArray: array of MetaRec;
结果出错,Delphi不接受这样的定义(必须是常量或数量类型)
还是如下定义函数也出错,Delphi不接受这样的返回值
function GetClass: MetaRec;
那么,我想请问该如何定义这样的数组和函数?
在一个系统中,我定义了一个关于数据库的基础类,TTabBase,然后数据库中的每张表的记录都定义了一个TTabBase的子类,如职员表Employee,和部门Department表,就定义成
TEmployee = Class(TTabBase);
TDepartment = Class(TTabBase);
这样系统中就有了多个TTabBase的子类。
我想定义一个数组,在不同的地方表示不同的子类列表。
如在处理职员表时,它是
ItemArray: array of TEmployee;
在处理部门表时,它是
ItemArray: array of TDepartment;
现在我的想法是,在一个通用的功能模块中,通过定义一个元类,将子类类型作为变量带进去,从而实现对不同子类的统一操作。
元类的定义和元类变量的定义:
TMetaClass = class of TTabBase;
var
MetaRec: TMetaClass;
这应该没有错吧,但是问题出在使用这个元类的使用上
我把上面的数组定义成
ItemArray: array of MetaRec;
结果出错,Delphi不接受这样的定义(必须是常量或数量类型)
还是如下定义函数也出错,Delphi不接受这样的返回值
function GetClass: MetaRec;
那么,我想请问该如何定义这样的数组和函数?