對不起,如果這已問我試着做一些谷歌,荷蘭國際集團,並沒有發現任何匹配所以這裏去之前....防止重複登記 - 溫莎城堡
我有一個溫莎城堡容器添加我的組件使用下面的方法(其中容器的IWindsorContainer
一個實例)...
container.Register(AllTypes.FromAssemblyNamed("App.Infrastructure")
.Where(x => !x.IsAbstract && !x.IsInterface)
.WithService.DefaultInterface()
這個偉大的工程,但我當時想註冊相同的方式另一個DLL來解決從依賴關係。 ..
無論如何,我可以讓Windsor通知我是否添加了相同的界面分辨率,即:每個界面只有1個實施者(如果存在多個界面,則首先執行)。
希望我已經很好地解釋了我自己。我正在使用Castle Windsor版本:2.5.1.0並且升級/更改版本不是真正的選項。
更新:
我通過他們已經註冊後去除重複登記解決了這個。 後完成註冊,然後我有以下的循環......
var registeredServices = new Dictionary<Type, string>();
foreach (var node in container.Kernel.GraphNodes)
{
var cmp = ((Castle.Core.ComponentModel)node);
Type t = cmp.Service;
if (registeredServices.ContainsKey(t))
container.Kernel.RemoveComponent(cmp.Name);
else
registeredServices.Add(t, cmp.Implementation.FullName);
}
它應該是第一次註冊解決的默認行爲 – maxlego
Hi @ maxlego。我不明白你的意思,請你詳細說明你的意思。如果您使用相同的界面註冊多個組件,請使用 –
。那麼當你通過這個接口解決你將獲得第一個註冊的組件。據我瞭解,這是你想要的。或者不是? – maxlego