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

csharpserver side programmingprogramming更新于 2025/4/14 22:22:17

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() 方法中将 ILog 注册到 IoC 容器,如下所示。

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

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

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


相关文章