Autofac如何更新注册?

时间:2017-08-18 12:19:22

标签: c# asp.net-web-api2 autofac autofac-configuration

来自Autofac documentation

  

默认情况下,Autofac会覆盖组件注册。这意味着应用程序可以注册其所有默认组件,然后读取关联的配置文件以覆盖为部署环境自定义的任何组件。

如何覆盖注册, 首先,我做了一致的扫描,

builder
   .RegisterAssemblyTypes(assembly)              
   .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
   .AsImplementedInterfaces()
   .AsSelf()
   .InstancePerRequest();

然后尝试更新没有范围标记的注册

builder
    .RegisterType<NotPerRequestType>()
    .AsImplementedInterfaces();

但仍然有2个注册,我仍然没有得到匹配的标签错误我解决NotPerRequestType。

1 个答案:

答案 0 :(得分:2)

您无法更改事后注册。您需要使用LINQ排除在程序集扫描期间不想注册的内容。

builder.RegisterAssemblyTypes(assembly)
       .Where(t => t != typeof(NotPerRequestType))
       ...

然后您只能进行一次注册 - 您稍后手动注册的注册。

不幸的是,这是一把双刃剑&#34;尝试自动只注册所有内容,然后意识到你有例外。你真的需要非常小心地使用毛毯装配扫描。