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

종속성 C# Asp.net Core로 추가된 등록 서비스의 서비스 수명을 지정하는 방법은 무엇입니까?

<시간/>

내장 IoC 컨테이너는 등록된 서비스 유형의 수명을 관리합니다. 지정된 수명을 기준으로 서비스 인스턴스를 자동으로 폐기합니다.

내장 IoC 컨테이너는 세 가지 수명을 지원합니다. -

싱글톤 − IoC 컨테이너는 애플리케이션 수명 동안 단일 서비스 인스턴스를 생성하고 공유합니다.

일시적 − IoC 컨테이너는 요청할 때마다 지정된 서비스 유형의 새 인스턴스를 생성합니다.

범위 − IoC 컨테이너는 요청당 한 번 지정된 서비스 유형의 인스턴스를 생성하고 단일 요청에서 공유됩니다.

예시

public interface ILog{
   void info(string str);
}
class MyConsoleLogger : ILog{
   public void info(string str){
      Console.WriteLine(str);
   }
}
public class Startup{
   public void ConfigureServices(IServiceCollection services){
      services.Add(new ServiceDescriptor(typeof(ILog), new
      MyConsoleLogger())); // singleton
      services.Add(new ServiceDescriptor(typeof(ILog),
      typeof(MyConsoleLogger), ServiceLifetime.Transient)); // Transient
      services.Add(new ServiceDescriptor(typeof(ILog),
      typeof(MyConsoleLogger), ServiceLifetime.Scoped)); // Scoped
   }
}

다음은 extension 메소드를 이용하여 타입(서비스)을 등록하는 방법을 보여주는 예시입니다.

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