1

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

我这样注册了两个容器范围的服务:

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 专家,如果能帮助我快速解决这个问题,我将不胜感激。

谢谢大家!

4

1 回答 1

2

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

您可以使用“.DefaultOnly()”来修改您的第二个注册,以便第一个是实际的默认值。有关更多信息,请参阅wiki 页面

于 2009-10-06T21:49:42.090 回答