2011-10-20 44 views
5

我实际上试图使用Rtti来实现一个通用的方法调用器。它应该是这样的:如何在Delphi XE中通过名称获取类的类型引用?

  • 我会提供类名,方法名和参数
  • 调用者会通过调用这个类的指定方法

所以,我做的工作需要类引用以获取其Rtti信息并寻找我想调用的方法。

有没有办法做到这一点,而不是实现我想要使用的类的类参考列表?

+0

您打算如何计划抓住课堂实例? –

+0

我可以实例化一个对象,不管我是否获得类参考 – Haruki

回答

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; 
+0

它在这里工作,非常感谢您的答案! – Haruki

+0

有什么方法可以查看我是否已经实例化了此类的任何实例并获取此对象以供使用? – Haruki

+2

这是另一个问题,但使用不可能的RTTI。 – RRUZ

相关问题