因此,如果具体注册类型有多个候选,Autofac 允许我们选择要使用的构造函数。解释如下 - https://autofac.readthedocs.io/en/latest/advanced/constructor-selection.html#iconstructorselector
但是,如果我想对每个注册(数百个Autofac.Module
类中的数千个注册)使用自定义构造函数选择器,该怎么办?如何在不明确自定义每个注册的情况下更改默认设置?
动机
我们有一个非常大的 .NET Framework 应用程序,使用 MEF 作为 IoC。在迁移到 .NET Core 之前,我们希望将其替换为 Autofac,作为初步步骤。
有 Autofac.Mef,但它不支持 Lazy 或开放泛型注入,根据此处的文档 - https://autofac.readthedocs.io/en/latest/integration/mef.html#known-issues-gotchas
因此我们将迁移到正确的 Autofac。我已经编写了检查创建的 MEF 容器并生成相应 Autofac 注册代码的代码。但有一个问题 - 如果 Autofac 选择的构造函数与 MEF 不同怎么办?即不是归因于的那个[ImportingConstructor]
?
因此,我希望能够自定义注册代码以尊重属性,至少目前如此,以降低回归风险。当然,既然代码无论如何都会生成,我可以修改每个注册。但我想知道是否有更好的方法。