Delphi Prism - как определить фактический класс, который TObjectExtender "расширяет"

У меня есть большое количество журналов по всему моему коду 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, но при компиляции в Delphi Prism в выходных данных VS 2010

TObjectExtender: A log message

независимо от фактического класса, содержащего исполняемый код.

Может кто-нибудь предложить способ получить фактическое имя класса в Delphi Prism, пожалуйста?

1 ответ

Решение

Чтобы получить имя текущего класса, просто используйте

Self.GetType().Name
Другие вопросы по тегам