C# 使用Ninject的DI

C# 使用Ninject的DI,c#,asp.net,ninject,C#,Asp.net,Ninject,我对DI感到困惑。我看过很多文章解释了可以使用构造函数实现DI,有些文章提到了使用ninject实现DI。所以我无法理解ninject的用法。如果ninject不在那里,那么代码也可以工作。你能解释一下使用ninject的好处吗 引用达林·迪米特罗夫的话 使用Ninject为我提供了什么,而仅仅依靠它我是做不到的 以下是松耦合的基本原理 系统中的代码行更少 用于处理对象生命周期的标准容器 在特定的环境中,如经典WebForms、ASP.NET MVC、ASP.NET Web API中,有许多用

我对DI感到困惑。我看过很多文章解释了可以使用构造函数实现DI,有些文章提到了使用ninject实现DI。所以我无法理解ninject的用法。如果ninject不在那里,那么代码也可以工作。你能解释一下使用ninject的好处吗

引用达林·迪米特罗夫的话

使用Ninject为我提供了什么,而仅仅依靠它我是做不到的 以下是松耦合的基本原理

  • 系统中的代码行更少
  • 用于处理对象生命周期的标准容器
  • 在特定的环境中,如经典WebForms、ASP.NET MVC、ASP.NET Web API中,有许多用于注入的插件
  • 可以自动处理IDIsposable对象
所有你应该手动处理的事情。尽管如此,DI框架并不重要。它应该很快,并提供应用程序所需的特定功能。但是DI框架绝对不应该以松散耦合的方式影响您设计代码和应用程序中不同层的方式(针对接口和抽象类编程以削弱应用程序不同层之间的耦合)

因此,可以将DI框架视为只干预应用程序的合成根的东西,并将其视为一个可以在眨眼之间用不同的框架替换的框架,甚至可以手动处理对象生命周期

例如,您在问题中显示的代码非常糟糕,因为它将您的层绑定到特定的DI框架。那边的
[Inject]
属性就像癌症。这意味着您的应用程序代码依赖于特定的DI框架

我也建议你读一下这个

A目前正在制作中,第3章将很快发布。