当前位置:  开发笔记 > 编程语言 > 正文

Delphi RTTI问题:GetPropInfo在{$ METHODINFO ON}时返回nil?

如何解决《DelphiRTTI问题:GetPropInfo在{$METHODINFOON}时返回nil?》经验,为你挑选了1个好方法。



1> utku_karatas..:

疑难杂症!似乎这个问题隐藏在我忽略的前瞻声明中.不知道偷偷摸摸的功能.

似乎编译器只考虑类的第一个声明来生成RTTI,所以如果你有这样的前向声明......

  type 
    TMyClass = class;   
    ...    
    ...
    {$METHODINFO ON}
    TMyClass = class
    private
      fField: integer;
    published
      property Field: integer read fField write fField;
    end;
    {$METHODINFO OFF}   
    ...   
    ...   
    procedure TestRTTI;   
    begin
      assert(assigned(GetPropInfo(TMyClass, 'Field')), 'WTF! No RTTI found!');   
    end;

...你会得到断言错误.因此,为了使RTTI正确,需要为正向声明启用{$ METHODINFO}指令,如此处所示....

  type 
    {$METHODINFO ON}
    TMyClass = class;   
    {$METHODINFO OFF}   
    ...    
    ...
    TMyClass = class
    private
      fField: integer;
    published
      property Field: integer read fField write fField;
    end;
    ...   

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有