我正在研究從商業組件套件派生的組件,並且遇到了一個我從未考慮過的挑戰。請看下面的代碼片段:從祖先的祖先繼承方法
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