Computer >> Máy Tính >  >> Lập trình >> C#

Làm cách nào để chỉ định thời gian sử dụng dịch vụ cho dịch vụ đăng ký được thêm vào làm phụ thuộc C # Asp.net Core?

Vùng chứa IoC tích hợp quản lý thời gian tồn tại của loại dịch vụ đã đăng ký. Tự động loại bỏ một phiên bản dịch vụ dựa trên thời gian tồn tại được chỉ định.

Vùng chứa IoC tích hợp hỗ trợ ba loại vòng đời -

Singleton - Vùng chứa IoC sẽ tạo và chia sẻ một phiên bản dịch vụ duy nhất trong suốt vòng đời của ứng dụng.

Tạm thời - Vùng chứa IoC sẽ tạo một phiên bản mới của loại dịch vụ được chỉ định mỗi khi bạn yêu cầu.

Phạm vi - IoC container sẽ tạo một phiên bản của loại dịch vụ được chỉ định một lần cho mỗi yêu cầu và sẽ được chia sẻ trong một yêu cầu duy nhất.

Ví dụ

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
   }
}

Ví dụ sau đây cho thấy các cách đăng ký các loại (dịch vụ) bằng cách sử dụng các tiện ích mở rộng.

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));
   }
}