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