2017-08-16 32 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

相關問題