2012-12-13 39 views
1

我的Delphi代碼中有大量的日誌記錄,它經常使用Self.ClassName來記錄包含當前正在執行的代碼的類的名稱。德爾福棱鏡 - 我如何確定TObjectExtender是「擴展」的實際類

我現在正在將一些代碼編譯成Delphi Prism .NET程序集。

但是,在Delphi Prism下,Self.ClassName現在返回「TObjectExtender」而不是實際的類名。

例如

type 
    TMyClass: TObject 
    begin 
    procedure MyProc(); 
    end; 
... 

procedure TMyClass.MyProc; 
begin 
    Log(Format('%s: A log message', [Self.ClassName])); 
end; 

輸出

TMyClass: A log message 

在Delphi XEII編譯時,但在Delphi棱鏡在VS 2010和輸出

TObjectExtender: A log message 

含有運行代碼的實際類的編譯時無論。

任何人都可以提出一種方法來獲取Delphi Prism中的實際類名嗎?

回答

2

要獲得當前類的名稱,只是用

Self.GetType().Name 
+0

真棒,謝謝!我的谷歌搜索幾乎沒有任何結果。 –