如何在Delphi XE中通过类名获取其类型引用?

5
我实际上正在尝试使用Rtti来实现通用方法调用器。它应该像这样工作:
  • 我将提供类名、方法名和参数
  • 调用程序将通过调用此类的指定方法来完成其工作
因此,我需要类引用以获取其Rtti信息并寻找要调用的方法。
有没有办法在不实现我想要使用的类的类引用列表的情况下做到这一点?

你打算如何获取该类的实例? - David Heffernan
无论我是否获取类引用,我都可以实例化一个对象。 - Haruki
1个回答

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;

有没有什么方法可以检查我是否已经实例化了此类的任何实例并获取此对象以供使用? - Haruki
2
这是针对另一个问题的,但使用RTTI是不可能的。 - RRUZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接