有什么相似的吗? https://github.com/aspnet/DependencyInjection用于良好的旧.NET框架应用程序?
“包含ASP.NET Core和Entity Framework Core使用的常见DI抽象。”
我正在编写一个框架,我不想强迫用户使用特定的IoC容器。
答案 0 :(得分:5)
我正在编写一个框架,我不想强迫用户使用特定的IoC容器。
这样做的方法是为用户替换创建良好的扩展点。有一个共同的DI抽象是一个坏主意,因为这是一个称为Conforming Container的反模式。这种反模式不是理论上的; ASP.NET Core应用了这种反模式,其结果是Simple Injector维护者和Autofac维护者都无法创建完全符合定义的合同的适配器实现。 Simple Injector的故事可以阅读here和here,可以找到与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-*"
}