2011-03-30 32 views
0

我有一個要求,我希望爲接口配置一個插件,使其始終爲默認類型,但允許其他程序集對該插件的配置始終優先。StructureMap - 爲插件配置默認類型,但可以重寫?

所以說我有MyAssembly.dll程序,它具有安裝此新註冊表: For<IBar>().Use<BarImpl>();

如果一個特定的客戶需要不同的功能,我想刪除MyAssembly.CustomerA.dll進入bin文件夾應用程序。它的註冊表類似於: For<IBar>().Use<CustomerABarImpl>();

MyAssembly.CustomerA.dll中的配置應始終覆蓋配置。

我讀過配置文件可以做到這一點,但這似乎暗示我需要設置應用程序應該使用哪個配置文件。如果我可以,我寧可不要; MyAssembly.CustomerA.dll的存在應該足夠了。

現在,這個問題是相似的:Using StructureMap, when a default concrete type is defined in one registry, can it be redefined in another registry?

但我不想離開它「無論StructureMap發現最後一次。」

可以這樣做嗎?

回答

0

簡介有點令人困惑,我不相信他們會爲這種情況很好地工作。這聽起來像你想要一個方法,說「使用這個默認,除非任何其他具體類型註冊。」

我不知道有這樣做的方法,但可以確保您的覆蓋類型是最後註冊的。我將不得不看你的配置給出一個確切的圖片,但這個想法應該是調用Initialize並設置除客戶特定的東西以外的所有東西。然後調用Configure並掃描其他程序集。這樣,除非在單獨的程序集中爲該接口添加了另一個實現,否則所有基類型都將爲默認類型。

+0

這是我相信做到這一點的唯一方法;您需要定義一些方法來從初始掃描中排除插件程序集,然後在'Initialize'之後顯式'配置'插件程序集。它的恥辱沒有任何內置來處理這個問題。 – Andy 2012-08-13 11:52:51

0

在掃描註冊表之前註冊默認實例。