Мне нужно исправить сторонний компонент. Этот класс компонента имеет частную переменную, которая активно используется ее потомками:
TThirdPartyComponentBase = class
private
FSomeVar: Integer;
public
...
end;
TThirdPartyComponent = class (TThirdPartyComponentBase)
protected
procedure Foo; virtual;
end;
procedure TThirdPartyComponent.Foo;
begin
FSomeVar := 1; // ACCESSING PRIVATE FIELD!
end;
Это работает, потому что оба класса находятся в одной единице, поэтому они являются "друзьями".
Но если я попытаюсь создать новый класс в новом модуле
TMyFixedComponent = class (TThirdPartyComponent)
procedure Foo; override;
end;
Я больше не могу получить доступ к FSomeVar, но мне нужно использовать его для моего исправления. И я действительно не хочу воспроизводить в своем коде все это дерево базовых классов.
Можете ли вы посоветовать быстрый хак для доступа к этому частному полю без изменения исходного компонента, если это вообще возможно?