มีสามวิธีในการลงทะเบียนการพึ่งพาใน 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 | แอปพลิเคชันที่มีพฤติกรรมที่แตกต่างกันต่อผู้ใช้ | น้ำหนักเบาและบริการไร้สัญชาติ |