依赖注入抽象库

本文关键字:抽象 注入 依赖 | 更新日期: 2023-09-27 18:05:17

有没有在。net框架应用中使用https://github.com/aspnet/DependencyInjection ?

"包含常见的DI抽象。. NET Core和Entity Framework Core的使用。"

我正在编写一个框架,我不想强迫用户使用特定的IoC容器。

依赖注入抽象库

我正在编写一个框架,我不想强迫用户使用特定的IoC容器。

要做到这一点,方法是创建良好的扩展点供用户替换。拥有一个通用的DI抽象是一个坏主意,因为这是一种称为"一致性容器"的反模式。这种反模式不是理论上的东西;ASP。NET Core应用了这种反模式,结果是简单注入器维护者和Autofac维护者都无法创建一个完全符合定义契约的适配器实现。简单注入器的故事可以在这里和这里阅读,微软对此的一般性讨论可以在这里找到。你可以在这里阅读我给微软的公开信,你可以看到Autofac维护者同意这一声明。

最后,微软承认了这些问题,并承诺他们将通过提供

来建立良好的集成可能性。

每个框架都有足够的组合根,使集成尽可能顺利。

因此要避免在您自己的框架中应用一致性容器反模式。我们已经看到微软在ASP的下一个小版本中修复了这个反模式造成的问题。净的核心。相反,要提供Mark Seemann在这里描述的"良好的集成可能性"。

您可以使用使用DI包的.NET Core项目,然后让该项目以整个框架为目标。您的目标是一个"完整的"目标框架名称(TFM),您的project.json看起来像这样:

{      
  "dependencies": {
    "Microsoft.Extensions.DependencyInjection": "1.0.0"
  },
  "frameworks": {
    "net46": { }
  },
  "version": "1.0.0-*"
}