1

Delphi コード全体で大量のログを記録していますが、現在実行中のコードを含むクラスの名前を記録するために Self.ClassName を使用することがよくあります。

現在、このコードの一部を 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 でコンパイルした場合、VS 2010 の出力で Delphi Prism でコンパイルした場合

TObjectExtender: A log message

実行中のコードを含む実際のクラスに関係なく。

Delphi Prismで実際のクラス名を取得する方法を誰か提案できますか?

4

1 に答える 1

2

現在のクラスの名前を取得するには、次を使用します

Self.GetType().Name
于 2012-12-13T20:03:40.640 に答える