我们如何将服务依赖项注入到控制器C#Asp.net Core中?

ASP.NET Core使用内置的IoC容器通过构造函数或方法注入依赖关系类的对象。

内置容器由IServiceProvider实现表示,该实现默认情况下支持构造函数注入。内置IoC容器管理的类型(类)称为服务。

为了让IoC容器自动注入我们的应用程序服务,我们首先需要在IoC容器中注册它们。

示例

public interface ILog{
   void info(string str);
}
class MyConsoleLogger : ILog{
   public void info(string str){
      Console.WriteLine(str);
   }
}

ASP.NET Core允许我们在Startup类的ConfigureServices方法中向IoC容器注册我们的应用程序服务。ConfigureServices方法包括IServiceCollection类型的参数,该参数用于注册应用程序服务

ConfigureServices()如下所示,用IoC容器注册ILog 。

public class Startup{
   public void ConfigureServices(IServiceCollection services){
      services.AddSingleton<ILog, MyConsoleLogger>();
   }
}

IServiceCollection实例的Add()方法用于向IoC容器注册服务

我们已将ILog指定为服务类型,并将MyConsoleLogger指定为其实例。这将把ILog服务注册为单例现在,一个IoC容器将创建MyConsoleLogger类的单例对象,并将其注入到我们将ILog作为构造函数或方法包括在内的类的构造函数中整个应用程序中的参数。