如何在 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 作为构造函数或方法参数的类的构造函数中。

更新于:2020年9月25日

1K+ 浏览量

启动您的 职业生涯

完成课程获得认证

开始学习
广告