我正在使用C#插件體系結構。插件是DLL的暴露一堆演示者,這是實現IPresenter接口的對象。 IPresenter接口可在所有插件共享的DLL中使用。演示者還可以實現IAction接口定義的其他方法,如ILoadAction,ISaveAction等。這些接口也由同一個DLL共享,因此所有插件都可以具有實現此類接口的演示者。插件體系結構和共享接口問題
案例:我在插件A中有演示者X,它實現了IPresenter接口和ILoadAction接口。在插件B中,我要求插件架構給我一個演示者X.這給了我一個對象IP地址 IPresenter。要調用該演示者的LoadAction方法,我必須將演示者轉換爲ILoadAction。
問題:如果我從插件A中的演示者X中刪除ILoadAction,插件B中的代碼仍將編譯,即使演示者不再實現ILoadAction。在這種情況下,我想要被編譯器警告。其實,我想避免不得不一直施展到某個IAction ...
問題:如何處理?
這些選項實際上不會產生編譯時錯誤,如果你刪除該接口爲您的問題描述,但這決不是因爲整點編譯時錯誤你的插件方法似乎是插件沒有明確地耦合到其他功能,但可以有'額外的方法'。 如果你想編譯時間檢查:只是強制所有插件實施ILoadAction ... – 2009-12-09 10:44:25
-1這聽起來不像一個可擴展的體系結構。想象一下,在開發了數百個實現之後,您現在需要添加另一個「功能」。這意味着在界面中添加另一種方法,從而破壞數百個實現。 – 2009-12-09 10:46:35