依赖注入抽象库

时间:2016-09-02 14:46:48

标签: c# .net dependency-injection asp.net-core

有什么相似的吗? https://github.com/aspnet/DependencyInjection用于良好的旧.NET框架应用程序?

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

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

2 个答案:

答案 0 :(得分:5)

  

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

这样做的方法是为用户替换创建良好的扩展点。有一个共同的DI抽象是一个坏主意,因为这是一个称为Conforming Container的反模式。这种反模式不是理论上的; ASP.NET Core应用了这种反模式,其结果是Simple Injector维护者和Autofac维护者都无法创建完全符合定义的合同的适配器实现。 Simple Injector的故事可以阅读herehere,可以找到与Microsoft就此进行的一般性讨论here。你可以在这个帖子here中阅读我给微软的公开信,你可以看到Autofac维护者agree有这个陈述。

最后,微软acknowledged承诺通过提供

来建立良好的整合可能性的问题
  每个框架都有足够的组合根,使整合尽可能顺利。

因此,请阻止在您自己的框架中应用Conforming Container反模式。我们已经看到Microsoft修复了这种反模式在ASP.NET Core的下一个次要版本中引起的问题。相反,提供良好的整合可能性"正如马克·西曼所描述的here

答案 1 :(得分:2)

您可以使用消耗 DI 包的.NET Core项目,然后让此项目定位到完整框架。你定位了一个" full"目标框架标记(TFM),你project.json看起来像这样:

{      
  "dependencies": {
    "Microsoft.Extensions.DependencyInjection": "1.0.0"
  },

  "frameworks": {
    "net46": { }
  },

  "version": "1.0.0-*"
}