使用插件覆盖autofac注册

Wim*_*nen 15 c# dependency-injection autofac

我有一个IFoo服务实现DefaultFoo,我已经在我的autofac容器中注册了它.

现在我想允许IFoo在插件程序集中实现的替代实现,可以将其放在"plugins"文件夹中.如果存在,如何配置autofac以优先选择此替代实现?

Mem*_*zer 17

如果您注册了一些接口实现,Autofac将使用最新的注册.其他注册将被覆盖.在您的情况下,如果存在插件并且注册自己的IFoo服务实现,Autofac将使用插件注册.

如果多个组件公开相同的服务,Autofac将使用最后注册的组件作为该服务的默认提供程序.

请参阅默认注册

  • 这表明它是预期的:http://docs.autofac.org/en/latest/register/registration.html#default-registrations (2认同)
  • 请注意,其他注册不会被覆盖!Autofac 将只使用最后注册的组件,但仍然可以解析之前的组件(例如 Resolve<IEnumerable<T>>) (2认同)