我实际上试图使用Rtti来实现一个通用的方法调用器。它应该是这样的:如何在Delphi XE中通过名称获取类的类型引用?
- 我会提供类名,方法名和参数
- 调用者会通过调用这个类的指定方法
所以,我做的工作需要类引用以获取其Rtti信息并寻找我想调用的方法。
有没有办法做到这一点,而不是实现我想要使用的类的类参考列表?
我实际上试图使用Rtti来实现一个通用的方法调用器。它应该是这样的:如何在Delphi XE中通过名称获取类的类型引用?
所以,我做的工作需要类引用以获取其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;
您打算如何计划抓住课堂实例? –
我可以实例化一个对象,不管我是否获得类参考 – Haruki