0

Autofac 文档

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

我怎样才能覆盖注册,首先我进行组装扫描,

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

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

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

但是仍然有 2 个注册,当我解析 NotPerRequestType 时,我仍然没有收到匹配的标签错误。

4

1 回答 1

2

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

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

然后您将只有一个注册 - 您稍后手动注册的那个。

不幸的是,这是一把“双刃剑”,试图自动注册所有内容,然后意识到你有例外。您确实需要非常小心地使用毯式组件扫描。

于 2017-08-19T20:57:15.177 回答