【问题标题】:How to get the class type reference by its name in Delphi XE?如何在 Delphi XE 中通过名称获取类类型引用?
【发布时间】:2011-12-11 17:29:20
【问题描述】:

我实际上是在尝试使用 Rtti 来实现通用方法调用程序。它应该像这样工作:

  • 我将提供类名、方法名和参数
  • 调用者将通过调用该类的指定方法来完成其工作

所以我需要类引用来获取它的 Rtti 信息并寻找我想要调用的方法。

在不实现我想要使用的类的类引用列表的情况下,有什么方法可以做到这一点?

【问题讨论】:

  • 您打算如何获取该类的实例?
  • 无论是否获得类引用,我都可以实例化一个对象

标签: delphi delphi-xe rtti


【解决方案1】:

要使用他的名字获取类引用,您必须使用传递类名称的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;

【讨论】:

  • 有什么方法可以查看我是否已经实例化了此类的任何实例并获取该对象以供使用?
  • 这是另一个问题,但使用 RTTI 是不可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 2015-06-10
  • 1970-01-01
  • 2012-05-15
  • 2017-12-24
  • 1970-01-01
相关资源
最近更新 更多