如果我有这样的课程:
TServerSettings = class(TSettings)
strict private
FHTTPPort : Integer;
published
property HTTPPort : Integer read FHTTPPort write FHTTPPort default 80;
end;
如何使用RTTI获取
default
属性的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.
请注意,问题所在的类已损坏。创建实例时,系统不会自动将属性初始化为默认值。您需要向该类添加一个构造函数才能做到这一点。