我有兩個接口,一個從antoher得出:接口多態性在Delphi
type
ISomeInterface = interface
['{5A46CC3C-353A-495A-BA89-48646C4E5A75}']
end;
ISomeInterfaceChild = interface(ISomeInterface)
['{F64B7E32-B182-4C70-A5B5-72BAA92AAADE}']
end;
現在我有一個過程,它的參數是ISomeInterface這樣的:
procedure DoSomething(SomeInterface: ISomeInterface);
我要檢查,如果SomeInterface是ISomeInterfaceChild。 Is
運算符在Delphi 7的接口中不受支持,我也不能在這裏使用Supports
。我能做什麼?
如果只需要檢查接口是否支持'ISomeInterfaceChild',那麼你正在使用錯誤的過載。你應該使用兩個參數重載,正如我在答案中所演示的那樣。 –
好吧,我假設如果你需要檢查參數ISomeInterfaceChild,你還需要使用它作爲ISomeInterfaceChild。另外檢查不太有意義,這應該不重要,因此檢查它可能表明設計問題。 – ain
@ain:不一定。有時候接口被用來宣傳關於包含對象的特性,而實際上並沒有爲它們公開新的功能。在這種情況下,只需檢查是否存在支持的接口就足夠了。 –