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