• rtti取方法类型和返回值和参数


    方法的更多信息是指: 方法类型、返回值、参数等.
    --------------------------------------------------------------------------------


    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    uses Rtti,TypInfo;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      ms: TArray<TRttiMethod>;
      m: TRttiMethod;
      mps: TArray<TRttiParameter>;
      mp: TRttiParameter;
    begin
      Memo1.Clear;

      {先获取方法集合, 这里随便使用了 TButton 类}
      ms := TRttiContext.Create.GetType(TButton).GetMethods;
      for m in ms do
      begin
        {方法名称}
        Memo1.Lines.Add('方法名称: ' + m.Name);

        {方法类型: proceedure、function 等}
        Memo1.Lines.Add('方法类型: ' + GetEnumName(TypeInfo(TMethodKind), Ord(m.MethodKind)));

        {方法的返回值类型}
        if Assigned(m.ReturnType) then
          Memo1.Lines.Add('返回值: ' + GetEnumName(TypeInfo(TTypeKind), Ord(m.ReturnType.TypeKind)));

        {方法的参数列表}
        mps := m.GetParameters;
        if Length(mps) > 0 then
        begin
          Memo1.Lines.Add('参数:');
          for mp in mps do Memo1.Lines.Add(mp.ToString);
          //还可以通过 mp.ParamType 获取参数的数据类型
          //还可以通过 mp.Flags 获取参数的修饰符(譬如 var、const 等)
        end;

        Memo1.Lines.Add(EmptyStr);
      end;
    end;

    end.

  • 相关阅读:
    Java基础97 json插件的使用(java对象和json字符串对象之间的转换)
    rman checksyntax和解决RMAN-01009: syntax error: found "dot"
    oracle partition table 分区表详解
    RMAN.DBMS_RCVCAT 版本错误处理
    PSU/OPATCH/OJVM下载页面及安装方式(最实用版)
    12.2RAC搭建记录
    主备归档不一致导致的RMAN-08137无法清理归档解决方案
    Oracle 锁的等级
    表数据压缩
    OLTP/OLAP
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940572.html
Copyright © 2020-2023  润新知