我似乎有一个问题 - 相当意外;所以我想我可能会做一些愚蠢/错误的事情。
我注册了两个容器作用域服务:
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专家,我很乐意帮助您快速解决这个问题。
谢谢,全部!
答案 0 :(得分:2)
当注册两个服务时,最后一个服务获胜(第二个服务被命名并不重要,它仍然是该服务的注册),除非您按名称要求实例。
您可以使用“.DefaultOnly()”修改第二次注册,以便第一次注册是实际默认值。有关详细信息,请参阅wiki page。