对不起,如果这已问我试着做一些谷歌,荷兰国际集团,并没有发现任何匹配所以这里去之前....防止重复登记 - 温莎城堡
我有一个温莎城堡容器添加我的组件使用下面的方法(其中容器的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