如何使用 rtti 访问 class 属性?
How to access a class property with rtti?
可以用 rtti 获得 class 属性 吗?下面的代码有什么问题?
...
type
TTest = class
private
class function GetCP: string; static;
public
class property CP: string read GetCP;
end;
class function TTest.GetCP: string;
begin
Result := 'ABC';
end;
...
procedure TForm1.Button5Click(Sender: TObject);
var
oTest: TTest;
oType: TRttiType;
begin
oTest := TTest.Create;
try
oType := TRttiContext.Create.GetType(oTest.ClassType);
ShowMessage(Length(oType.GetProperties).ToString); // oType.GetProperties = nil !!!
finally
oTest.Free;
end;
end;
TIA 和最诚挚的问候,
布兰科
Class 无法通过 RTTI 访问属性。
可以用 rtti 获得 class 属性 吗?下面的代码有什么问题?
...
type
TTest = class
private
class function GetCP: string; static;
public
class property CP: string read GetCP;
end;
class function TTest.GetCP: string;
begin
Result := 'ABC';
end;
...
procedure TForm1.Button5Click(Sender: TObject);
var
oTest: TTest;
oType: TRttiType;
begin
oTest := TTest.Create;
try
oType := TRttiContext.Create.GetType(oTest.ClassType);
ShowMessage(Length(oType.GetProperties).ToString); // oType.GetProperties = nil !!!
finally
oTest.Free;
end;
end;
TIA 和最诚挚的问候, 布兰科
Class 无法通过 RTTI 访问属性。