我正在研究从商业组件套件派生的组件,并且遇到了一个我从未考虑过的挑战。请看下面的代码片段:从祖先的祖先继承方法
TMyClass = class
protected
procedure SomeMethod; virtual;
end;
TMyClass1 = class(TMyClass)
protected
procedure SomeMethod; override;
end;
TMyMode = (mmOne, mmTwo);
TMyClass2 = class(TMyClass1)
private
FMode: TMyMode;
protected
procedure SomeMethod; override;
public
property Mode: TMyMode read FMode write FMode;
end;
...
procedure TMyClass2.SomeMethod;
begin
if FMode = mmOne then inherited SomeMethod
else inherited TMyClass.SomeMethod;
end;
所以,如果模式= mmOne然后我继承是正常的,但如果它是mmTwo,我还是想继承我的祖先的祖先的代码,但是不知道是在祖先介绍。我已经尝试了上述,但没有成功,因为我以前从未遇到过这种情况,所以我认为这是不可能的。任何接受者?
我不想成为一个煞风景,但我宁愿重新安排我的代码因此这个构造的需求消失了 - 拆分一个或两个方法,添加一个参数或其他东西。 –
我同意 - 失去继承时总是存在下游问题的危险。但是,我无法控制商业组件。我可以相应地更改他们的代码,但每当我升级组件套件(DevExpress)时,都会给我带来下游维护问题。对于这个特定的场景,我认为这是最好的方法。 – Peter