【发布时间】: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