關於Delphi中TRttiContext.FindType失效的問題

一劍平江湖發表於2013-08-14

自從Delphi2010後,Delphi中的Rtti功能得到了增強。我們終於可以不用先RegisterClass,再GetClass獲取類的資訊了。而只是簡單的通過TRttiContext.GetType或FindType來獲取類,進而建立物件。雖然跟C#中的Rtti相比,還有些差距,不過這已經算是很大的進步了,希望Delphi越來越強,書歸正傳。最近在研究Delphi中增強的Rtti,發現TRttiContext的FindType有時可以返回正確的型別,有時卻返回nil。很傷腦筋。後來查詢官方文件才知道,並不是所有的類都會儲存到Rtti中的.只有那些在函式或類中被引用過的物件才會被自動新增到Rtti中,如果你想強制將所有的類都加入到Rtti中,那麼只需要一個簡單的預編譯命令就可以了:

{$STRONGLINKTYPES ON}

相關文章