默认情况下,Autofac会覆盖组件注册。这意味着应用程序可以注册其所有默认组件,然后读取关联的配置文件以覆盖为部署环境自定义的任何组件。
如何覆盖注册, 首先,我做了一致的扫描,
builder
.RegisterAssemblyTypes(assembly)
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
.AsImplementedInterfaces()
.AsSelf()
.InstancePerRequest();
然后尝试更新没有范围标记的注册
builder
.RegisterType<NotPerRequestType>()
.AsImplementedInterfaces();
但仍然有2个注册,我仍然没有得到匹配的标签错误我解决NotPerRequestType。
答案 0 :(得分:2)
您无法更改事后注册。您需要使用LINQ排除在程序集扫描期间不想注册的内容。
builder.RegisterAssemblyTypes(assembly)
.Where(t => t != typeof(NotPerRequestType))
...
然后您只能进行一次注册 - 您稍后手动注册的注册。
不幸的是,这是一把双刃剑&#34;尝试自动只注册所有内容,然后意识到你有例外。你真的需要非常小心地使用毛毯装配扫描。