如何在运行时转换类的属性?

时间:2017-08-16 23:23:30

标签: delphi runtime rtti

我有一个班级

type
  myClass = class
  private 
    FId: Integer;
  public
    function GetId: Integer;
    property Id: Integer read FId;
  end;

现在,我想在运行时交换Id属性getter,以使用GetId方法而不是FId字段。我可以使用RTTI或其他方法实现这一目标吗?

1 个答案:

答案 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;