如何在 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 作为构造函数或方法参数包含在哪里。