我有一个班级
type
myClass = class
private
FId: Integer;
public
function GetId: Integer;
property Id: Integer read FId;
end;
现在,我想在运行时交换Id
属性getter,以使用GetId
方法而不是FId
字段。我可以使用RTTI或其他方法实现这一目标吗?
答案 0 :(得分:1)
您无法在运行时使用getter方法替换属性reader字段。但你可以这样写:
type
TMyClass = class
private
FId: Integer;
function GetId: Integer;
public
property Id: Integer read GetId;
end;
implementation
function TMyClass.GetId: Integer;
begin
if IWantToReturnField then
Result := FId
else
Result := FId + SomeExtraStuff;
end;