首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法在delphi中通过名称实例化一个类?

在Delphi中,通过名称实例化一个类需要使用反射。以下是一个简单的示例,展示了如何使用反射实例化一个类:

  1. 首先,确保你已经在Delphi中启用了RTTI。
  2. 在Delphi中,使用TValue.From方法实例化一个类。
代码语言:delphi
复制
uses
  System.Rtti;

type
  TMyClass = class
  public
    procedure HelloWorld;
  end;

procedure TMyClass.HelloWorld;
begin
  WriteLn('Hello, World!');
end;

var
  MyClassInstance: TMyClass;
  Context: TRttiContext;
  MyClassType: TRttiInstanceType;
  MyClassMethod: TRttiMethod;
begin
  MyClassType := Context.GetType(TMyClass) as TRttiInstanceType;
  MyClassInstance := MyClassType.GetMethod('Create').Invoke(MyClassType.AsInstance.MetaclassType, []).AsObject as TMyClass;

  MyClassMethod := Context.GetType(TMyClass).GetMethod('HelloWorld');
  MyClassMethod.Invoke(MyClassInstance, []);
end.

在这个示例中,我们首先获取了TMyClassTRttiInstanceType,然后使用GetMethod方法获取Create方法并调用它来创建一个TMyClass实例。接下来,我们使用GetMethod方法获取HelloWorld方法并调用它。

请注意,这个示例仅适用于具有无参数构造函数的类。如果你需要使用带参数的构造函数,你需要修改代码以传递适当的参数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券