2011-07-26 245 views
4

我已經通過使用MEF創建了一個基於插件的應用程序。所以我創建了一個將由插件實現的接口庫。插件向後兼容性

但我有向後兼容性一個問題,

正如我在PluginInterface庫如果作出然後任何改變IPlugin定義的接口,現在,我無法加載舊版本插件(它實現較舊的接口)。

那麼我如何在應用程序中實現向後兼容?

請給我點建議,

感謝

回答

1

爲了保持compatable與以前的版本,你不能改變的接口。如果你想改變你的界面,你需要引入另一個新的界面(例如IPlugin2)。

+0

即使重新編譯您的擴展接口所在的域庫的版本,這也不適用嗎? IOW,不應該將我的'Domain'作爲實際主機應用程序的單獨解決方案嗎?通過這種方式,我可以對主機進行更改,而無需重新編譯我的域,從而打破一堆擴展? – IAbstract

+0

@IAbstract不完全確定你在問什麼,但是重新編譯一個程序集並不一定會破壞它的ABI。甚至有一些技術可以用來避免在向程序集添加新功能的同時破壞ABI/API。介紹這個答案中描述的新名稱版本接口是一種方法。另一種方法是通過像'XmlReaderSettings'這樣的類來接受參數,可以添加更多屬性而不會破壞針對舊版本編譯的代碼。 – binki