首页 > 解决方案 > 可以注册 Autofac 装饰器以覆盖现有注册吗?

问题描述

给定多个类型注册到同一个接口,Autofac 在解析组件时使用最后注册的类型。

这种行为的一个例外似乎是 Autofac 的装饰器功能。给定一个类型在使用注册键控类型然后使用相同键注册装饰器的标准过程修饰类型之前或之后注册为 IDoSomething,返回的实例似乎是非修饰类型。

我正在使用我编写的用于装饰 IConsumer 实例的库遇到这种情况。该库的现有客户端当前具有首先按约定注册所有内容的模块,然后是特定模块以覆盖具有特定需求的注册(例如其他生命周期范围、自定义工厂逻辑等)。如果将基于约定的模块修改为对于实现 IConsumer 的类型有一个例外,但我宁愿不需要执行此异常,因为它与其他注册的处理方式不一致,如果您忘记或不知道要排除它只是调试的麻烦连接装饰器之前的类型。

有没有更好的解决方案?

标签: autofac

解决方案


推荐阅读