我使用以下代码注册服务(使用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有什么变化,所以我的代码段不起作用?我做错了什么?