我实际上正在尝试使用Rtti来实现通用方法调用器。它应该像这样工作:
有没有办法在不实现我想要使用的类的类引用列表的情况下做到这一点?
- 我将提供类名、方法名和参数
- 调用程序将通过调用此类的指定方法来完成其工作
有没有办法在不实现我想要使用的类的类引用列表的情况下做到这一点?
要使用类名获取类引用,必须使用 TRttiContext.FindType
函数传递类的名称,并使用AsInstance
属性检索实例,然后您可以调用类的构造函数。
var
Instance : TRttiInstanceType;
ctx : TRttiContext;
mClass : TValue;
begin
ctx := TRttiContext.Create;
Instance := ctx.FindType(ClassName).AsInstance; //ClassName is something like 'Classes.TStringList';
mClass := Instance.GetMethod('Create').Invoke(Instance.MetaclassType,[]);
//do your stuff here
end;