解析集合时的AutoFac双实例

时间:2014-10-14 12:49:41

标签: c# asp.net-mvc ioc-container autofac

我使用以下代码注册服务(使用Autofac MVC集成包):

// IoC
var builder = new ContainerBuilder();

builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
builder.RegisterModelBinders(Assembly.GetExecutingAssembly()).PropertiesAutowired();
builder.RegisterModelBinderProvider();
builder.RegisterFilterProvider();

builder.RegisterAssemblyTypes(myAssembly)
      .AssignableTo(typeof(IMyInterface))
      .AsImplementedInterfaces()
      .InstancePerLifetimeScope();    

var container = builder.Build();

DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

现在我要注入IMyInterface个实现的集合:

public MyClass(Lazy<IEnumerable<IMyInterface>>> myInterfaces)
{
}

问题是myInterfaces.Value包含同一实现的两个不同实例。我的意思是:

public MyServ: IMyInterface 
{
}

MyServ集合中有myInterfaces.Value个实例。

我有2014年5月下载的Autofac第4版。一切正常,直到最后一次AutoFac更新(通过nuget)。 Autofac有什么变化,所以我的代码段不起作用?我做错了什么?

0 个答案:

没有答案