Autofac组件注册/解决bug?

时间:2009-10-06 21:43:57

标签: autofac

我似乎有一个问题 - 相当意外;所以我想我可能会做一些愚蠢/错误的事情。

我注册了两个容器作用域服务:

builder.Register<IServiceInfo>(c => CreateServiceInfo(c)).As<IServiceInfo>();
builder.Register<IServiceInfo>(c => CreateServiceInfoSomeOther(c)).As<IServiceInfo>().Named("someOther");

现在我试图解决

container.Resolve<IServiceInfo>()
and container.Resolve<IServiceInfo>("someOther")

我得到了同样的例子。我希望第一次调用返回第一个实例,第二次调用返回第二个实例。为什么会这样发生?

我希望周围有一些活跃的Autofac专家,我​​很乐意帮助您快速解决这个问题。

谢谢,全部!

1 个答案:

答案 0 :(得分:2)

当注册两个服务时,最后一个服务获胜(第二个服务被命名并不重要,它仍然是该服务的注册),除非您按名称要求实例。

您可以使用“.DefaultOnly()”修改第二次注册,以便第一次注册是实际默认值。有关详细信息,请参阅wiki page