加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi如何使用RTTI获取属性的默认值

发布时间:2020-12-15 03:49:44 所属栏目:大数据 来源:网络整理
导读:如果我有这样的课程: TServerSettings = class(TSettings)strict private FHTTPPort : Integer;published property HTTPPort : Integer read FHTTPPort write FHTTPPort default 80;end; 如何使用RTTI获取HTTPPort属性的默认属性? 解决方法 喜欢这个: {$A
如果我有这样的课程:
TServerSettings = class(TSettings)
strict private
    FHTTPPort : Integer;
published
    property HTTPPort : Integer read FHTTPPort write FHTTPPort default 80;
end;

如何使用RTTI获取HTTPPort属性的默认属性?

解决方法

喜欢这个:
{$APPTYPE CONSOLE}

uses
  System.TypInfo;

type
  TMyClass = class
  strict private
    FMyValue: Integer;
  published
    property MyValue: Integer read FMyValue default 42;
  end;

var
  obj: TMyClass;
  PropInfo: PPropInfo;

begin
  obj := TMyClass.Create;
  PropInfo := GetPropInfo(obj,'MyValue');
  Writeln(PropInfo.Default);
end.

请注意,在您的问题中,类似于它的类已被打破.创建实例时,系统不会自动将属性初始化为其默认值.您需要在此类中添加构造函数才能执行此操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读