加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 使用RTTI获取单元中定义的类和对象的完整列表

发布时间:2020-12-15 09:19:56 所属栏目:大数据 来源:网络整理
导读:我想获得在特定单元中定义的完整类列表 如何获取这些类的所有实例的列表,无论它们在何处创建? 解决方法 在回答您的问题之前,请记住在与Rtti相关的问题中始终包含您的delphi版本. 1)您正在使用新版本的delphi( = 2010)的Asumming,您可以使用 QualifiedName
>我想获得在特定单元中定义的完整类列表
>如何获取这些类的所有实例的列表,无论它们在何处创建?

解决方法

在回答您的问题之前,请记住在与Rtti相关的问题中始终包含您的delphi版本.

1)您正在使用新版本的delphi(> = 2010)的Asumming,您可以使用QualifiedName属性获取类型的单元名称,从那里您必须检查IsInstance属性以确定是否是类.

检查下一个样本.

{$APPTYPE CONSOLE}

{$R *.res}

uses
  Rtti,System.SysUtils;

procedure Test;
Var
 t : TRttiType;
  //extract the unit name from the  QualifiedName property
  function GetUnitName(lType: TRttiType): string;
  begin
    Result := StringReplace(lType.QualifiedName,'.' + lType.Name,'',[rfReplaceAll])
  end;

begin
 //list all the types of the System.SysUtils unit
  for t in TRttiContext.Create.GetTypes do
   if SameText('System.SysUtils',GetUnitName(t)) and (t.IsInstance) then
     Writeln(t.Name);
end;

begin
  try
    Test;
  except
    on E: Exception do
      Writeln(E.ClassName,': ',E.Message);
  end;
  Readln;
end.

2)Rtti无法列出类的实例.因为Rtti是关于类型信息而不是实例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读