2017-08-16 33 views
0

我有一个类如何在运行时转换类的属性?

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

现在,我要交换Id属性getter在运行时使用的GetId方法而不是FId领域。我可以使用RTTI或其他方法来实现这一点吗?

+1

欢迎来到堆栈请详细解释一下,不清楚你在问什么。 –

+0

属性Id:整数读取FId; 财产来自Fid的Id值,我想在运行时交换GetId getValue – mimakongjing

+0

是否要在Fid中放置getid的值? –

回答

1

您不能在运行时用getter方法替换属性阅读器字段。但你可以这样写:

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; 
+0

当然,我知道,但这一个你写的并不是我想要的,但是非常感谢你的帮助 – mimakongjing

+0

如果那个吸气者触发了一个事件,那么可能会有更多的灵活性。 –

+0

@David,取决于你想要做什么。为一流消费者制作一个活动。 – Victoria

相关问题