Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

컨트롤러 C# Asp.net Core에 서비스 종속성을 어떻게 주입할 수 있습니까?

<시간/>

ASP.NET Core는 기본 제공 IoC 컨테이너를 사용하여 생성자 또는 메서드를 통해 종속성 클래스의 개체를 주입합니다.

기본 제공 컨테이너는 기본적으로 생성자 주입을 지원하는 IServiceProvider 구현으로 표시됩니다. 내장 IoCcontainer가 관리하는 유형(클래스)을 서비스라고 합니다.

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() 메서드는 IoCcontainer에 서비스를 등록하는 데 사용됩니다.

ILog를 서비스 유형으로 지정하고 MyConsoleLogger를 해당 인스턴스로 지정했습니다.ILog 서비스를 싱글톤으로 등록합니다. 이제 IoC 컨테이너는 MyConsoleLogger 클래스의 싱글톤 개체를 만들고 ILog를 애플리케이션 전체에서 생성자 또는 메서드 매개변수로 포함할 때마다 클래스의 생성자에 이를 주입합니다. .