มีสามวิธีในการลงทะเบียนการพึ่งพาใน Startup.cs เช่น AddSingleton, AddScoped และ AddTransient
เพิ่มซิงเกิลตัน
เมื่อเราลงทะเบียนประเภทเป็นซิงเกิลตัน จะมีเพียงอินสแตนซ์เดียวเท่านั้นที่สามารถใช้ได้ทั่วทั้งแอปพลิเคชันและสำหรับทุกคำขอ
คล้ายกับมีวัตถุอยู่นิ่ง
อินสแตนซ์ถูกสร้างขึ้นสำหรับคำขอแรกและอินสแตนซ์นี้จะพร้อมใช้งานทั่วทั้งแอปพลิเคชันและสำหรับคำขอแต่ละรายการที่ตามมา
public void ConfigureServices(IServiceCollection services){
services.AddSingleton<ILog,Logger>()
} เพิ่มขอบเขต
เมื่อเราลงทะเบียนประเภทเป็น Scoped อินสแตนซ์หนึ่งรายการจะพร้อมใช้งานทั่วทั้งแอปพลิเคชันต่อคำขอ เมื่อมีคำขอใหม่เข้ามา อินสแตนซ์ใหม่จะถูกสร้างขึ้น เพิ่มขอบเขตระบุว่ามีวัตถุเดียวตามคำขอ
public void ConfigureServices(IServiceCollection services){
services.AddScoped<ILog,Logger>()
} เพิ่มชั่วคราว
เมื่อเราลงทะเบียนประเภทเป็น Transient ทุกครั้งที่มีการสร้างอินสแตนซ์ใหม่ Transient สร้างอินสแตนซ์ใหม่สำหรับทุกบริการ/ตัวควบคุม เช่นเดียวกับทุกคำขอและผู้ใช้ทุกคน
public void ConfigureServices(IServiceCollection services){
services.AddTransient<ILog,Logger>()
}
| พารามิเตอร์ | เพิ่มซิงเกิลตัน | เพิ่มขอบเขต | เพิ่มชั่วคราว |
|---|---|---|---|
| ตัวอย่าง | คำขอ/แต่ละผู้ใช้เหมือนกัน | หนึ่งรายการต่อคำขอ | แตกต่างชั่วนิรันดร์ |
| จำหน่ายแล้ว | ปิดแอพ | สิ้นสุดคำขอ | สิ้นสุดคำขอ |
| ใช้ใน | เมื่อจำเป็นต้องใช้ Singletonimplementation | แอปพลิเคชันที่มีพฤติกรรมที่แตกต่างกันต่อผู้ใช้ | น้ำหนักเบาและบริการไร้สัญชาติ |