我需要修复第三方组件。这个组件的类有私有变量,被它的后代积极使用:
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,但我需要将其用于修复。而且我真的不想在我的代码中重现所有基类树。
如果可能的话,您能否建议一些快速破解来访问该私有字段而不更改原始组件的单元?