依赖注入抽象库
本文关键字:抽象 注入 依赖 | 更新日期: 2023-09-27 18:05:17
有没有在。net框架应用中使用https://github.com/aspnet/DependencyInjection ?
"包含常见的DI抽象。. NET Core和Entity Framework Core的使用。"
我正在编写一个框架,我不想强迫用户使用特定的IoC容器。
要做到这一点,方法是创建良好的扩展点供用户替换。拥有一个通用的DI抽象是一个坏主意,因为这是一种称为"一致性容器"的反模式。这种反模式不是理论上的东西;ASP。NET Core应用了这种反模式,结果是简单注入器维护者和Autofac维护者都无法创建一个完全符合定义契约的适配器实现。简单注入器的故事可以在这里和这里阅读,微软对此的一般性讨论可以在这里找到。你可以在这里阅读我给微软的公开信,你可以看到Autofac维护者同意这一声明。我正在编写一个框架,我不想强迫用户使用特定的IoC容器。
最后,微软承认了这些问题,并承诺他们将通过提供
来建立良好的集成可能性。每个框架都有足够的组合根,使集成尽可能顺利。
因此要避免在您自己的框架中应用一致性容器反模式。我们已经看到微软在ASP的下一个小版本中修复了这个反模式造成的问题。净的核心。相反,要提供Mark Seemann在这里描述的"良好的集成可能性"。
您可以使用使用DI包的.NET Core
项目,然后让该项目以整个框架为目标。您的目标是一个"完整的"目标框架名称(TFM),您的project.json
看起来像这样:
{
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "1.0.0"
},
"frameworks": {
"net46": { }
},
"version": "1.0.0-*"
}