2012-12-13 28 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

真棒,谢谢!我的谷歌搜索几乎没有任何结果。 –