คอนเทนเนอร์ 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)); } }