鉴于在同一接口中注册了多种类型,因此在解析组件时,Autofac使用最后注册的类型。
此行为的一个例外似乎是Autofac的装饰器功能。假设在使用装饰键类型的标准过程装饰该类型之前或之后,将一个类型注册为IDoSomething,然后使用相同的键注册装饰器,则返回的实例似乎是未装饰的类型。
我遇到了这种情况,我编写了一个用于装饰IConsumer实例的库。该库的现有客户端当前具有一些模块,这些模块首先通过约定注册所有内容,然后使用特定模块来覆盖具有特定需求(例如其他生存期范围,自定义工厂逻辑等)的注册。如果将基于约定的模块修改为对于实现IConsumer的类型有一个例外,但是我宁愿不需要执行此例外,因为它与其他注册的处理方式不一致,并且如果您忘记或不知道要排除它只是调试的麻烦在装饰器接线前的类型。
对此有更好的解决方案吗?