我实际上是在尝试使用Rtti来实现泛型方法调用程序。它应该像这样工作:
所以我需要类引用以获取其Rtti信息并寻找我想要调用的方法。
如果没有实现我想要使用的类的类引用列表,有没有办法做到这一点?
答案 0 :(得分:8)
要使用他的名称获取类引用,您必须使用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;