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

ตัวอย่างต่อไปนี้แสดงวิธีการลงทะเบียนประเภท (บริการ) โดยใช้วิธีการขยาย

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