【问题标题】:Use of Rtti ParamTypeRtti ParamType 的使用
【发布时间】:2013-05-26 17:00:01
【问题描述】:

假设我们有以下代码片段:

TMyType = Pointer;

TMyClass = class
    procedure myMethod (argument : TMyType);
end;

我一直在使用 Rtti 来反映这样一个类,以便我可以写出包括参数类型在内的方法签名。但是,当我对此使用 Rtti 时,我得到:

TMyClass = class
    procedure myMethod (argument : Pointer);
end;

这不是获得名称 TMyType,而是获得指针。我正在使用 ParamType.name 来获取参数类型的名称。

我的问题是,有没有办法获得开发人员实际声明参数的类型的名称,即 TMyType?由于 ParamType.name 没有返回预期的类型名称,我假设未在类中声明的类型没有 Rtti 信息?

使用 Delphi XE

【问题讨论】:

  • 声明一个类型而不是别名TMytype = type Pointer
  • 如此简单,而且有效!非常感谢。
  • 原因是编译器在创建 RTTI 之前将别名解析为其基本类型,这就是为什么您会看到 Pointer 而不是 TMyType

标签: delphi


【解决方案1】:

Sertac Akyuz 和 Remy Lebeau 都回答了这个问题。我在下面提供答案:

声明一个类型而不是别名 TMytype = type Pointer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-26
    • 2013-04-22
    • 2011-12-02
    • 2019-12-08
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多