我需要修复一个第三方组件。该组件的类有一个私有变量,这个变量被它的子类所活跃地使用:
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,但我需要在我的修复程序中使用它。我真的不想在我的代码中重新编写所有基类的树。
如果可能的话,您能否建议一些快速的方法来访问该私有字段,而不更改原始组件单元?