2013-05-26 27 views
2

的假设我们有下面的代码片段:使用RTTI ParamType

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

+4

声明一个类型,而不是一个别名'TMytype =类型Pointer' –

+0

那么简单,它的作品!非常感谢。 – rhody

+1

原因是编译器在创建RTTI之前将别名解析为其基本类型,这就是为什么您看到“指针”而不是“TMyType”。 –

回答

1

Sertac Akyuz和雷米勒博都回答了这个问题。我在下方提供了答案:

声明一个类型,而不是一个别名的TMytype =类型的指针