什么是依赖注入
一种实现对象及其合作者或者依赖项之间松散耦合的技术。
以前我们在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"); }