c# 依赖注入DI以及它的好处

什么是依赖注入

一种实现对象及其合作者或者依赖项之间松散耦合的技术。

以前我们在action中使用对象的时候 可能是通过new 现在我们不需要这样做了。

我们可以交给其他某个地方帮我们new 我们只管使用这些对象

以前我们调用其他类的时候

 public IActionResult Index()
        {
            var tool = new EmailTool();
            tool.Send("xxx");
}

依赖注入的方式的好处

以后我们要增加或者修改其他的发消息方式 我们可以不用管这个的homecontroller

因为我们使用了接口 接口目的就是为了解耦

比如我们加一个PhoneTool 那么我们只加就行了 并且实现这个Itool 然后我们只需要改变Startup的configureservice

services.AddSingleton<ITool, PhoneTool>();

namespace NLogDemo2.Cores
{
    public interface ITool
    {
        void Send(string message);
    }
}


namespace NLogDemo2.Cores
{
    public class EmailTool: ITool
    {
        public void Send(string message)
        {
            Console.Write("发邮件:" + message);
        }
    }
}


 public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton<ITool, EmailTool>();
            services.AddMvc();
        }

 public class HomeController : Controller
    {
        private ITool _tool;
        private ILogger<HomeController> _logger;
        public HomeController(ILogger<HomeController> logger,ITool tool)
        {
            _tool = tool;
            _logger = logger;
        }
public IActionResult Index() { //以前需要new的 //var tool = new EmailTool(); //tool.Send("xxx"); _tool.Send("sdfdsfdsf"); }