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