Z
zensst
Unregistered / Unconfirmed
GUEST, unregistred user!
我打算生成一种方法,能够根据一个标志,如XType(integer),自动Create
一个类实例.如果是Delphi中定义的类,可以先RegisterClass,然后根据XType
的值来确定是调用哪个Class的Create方法;如果是自己定义的类,也可以如是
做;如果不是自己定义的,可以通过一种定义,比如通过一个TList,通过查找来
实现,Delphi就是这样.
例子:
PXTypeRec=^XTypeRec
XTypeRec=record
XType: Integer;
P: Pointer;
//@Create
end;
function RegisterXType(_XTypeRec: PXTypeRec): XType;
begin
{a TList add _XTypeRec}
{Result}
end;
function CreateWithXType(XType: Integer): TObject;
begin
{Search a TList to find the create function with XType}
{call XTypeCreate}
{Result}
end;
问题是,
如果Create带参数,怎么处理?
如果XType的值很多,即TList很大,如何提高效率?
如果不小心,将多个XTypeRec.XType定义为同一个值后,(而自己无法修
改,比如是其他人定义的,不能改代码)该怎样找到合适的方法(可以扩展
TypeRec的定义)?
一个类实例.如果是Delphi中定义的类,可以先RegisterClass,然后根据XType
的值来确定是调用哪个Class的Create方法;如果是自己定义的类,也可以如是
做;如果不是自己定义的,可以通过一种定义,比如通过一个TList,通过查找来
实现,Delphi就是这样.
例子:
PXTypeRec=^XTypeRec
XTypeRec=record
XType: Integer;
P: Pointer;
//@Create
end;
function RegisterXType(_XTypeRec: PXTypeRec): XType;
begin
{a TList add _XTypeRec}
{Result}
end;
function CreateWithXType(XType: Integer): TObject;
begin
{Search a TList to find the create function with XType}
{call XTypeCreate}
{Result}
end;
问题是,
如果Create带参数,怎么处理?
如果XType的值很多,即TList很大,如何提高效率?
如果不小心,将多个XTypeRec.XType定义为同一个值后,(而自己无法修
改,比如是其他人定义的,不能改代码)该怎样找到合适的方法(可以扩展
TypeRec的定义)?