คำถามติดแท็ก dependency-injection

รูปแบบการออกแบบเพื่อลดการเชื่อมต่อระหว่างส่วนประกอบโดยการฉีดเข้าสู่การพึ่งพาองค์ประกอบซอฟต์แวร์แบบไดนามิกที่จำเป็นต้องใช้ในการทำงาน

2
ข้อแตกต่างระหว่างการให้และการฉีด 'Window' กับ Window ใน Angular 8 และ 9 คืออะไร
ฉันมีโครงการสองแองกูลาร์ที่ใช้เวอร์ชันเหล่านี้: 9.0.0-next.6 8.1.0 ในรุ่น 9 ฉันใช้สิ่งนี้เพื่อจัดเตรียมและฉีดwindowobhject: @NgModule({ providers: [ { provide: Window, useValue: window }, ] }) export class TestComponent implements OnInit { constructor(@Inject(Window) private window: Window) } ซึ่งใช้งานได้ดี การใช้วิธีนี้กับเวอร์ชัน 8 มีการเตือนและข้อผิดพลาดระหว่างการรวบรวม: คำเตือน: ไม่สามารถแก้ไขพารามิเตอร์ทั้งหมดสำหรับ TestComponent ... ฉันแก้ไขมันโดยใช้เครื่องหมายคำพูดเดี่ยวเช่นนี้: @NgModule({ providers: [ { provide: 'Window', useValue: window }, ] }) export class …

3
มีวิธีที่แข็งแกร่งในการลงทะเบียนการพึ่งพาใน ASP.NET Core 3.1 นอกเหนือจากการเพิ่มทุกอย่างในคลาสเริ่มต้นหรือไม่
ฉันมีโครงการ ASP.NET Core 3.1 โดยทั่วไปฉันลงทะเบียนการพึ่งพาใด ๆ โดยใช้ConfigureServices()วิธีการในStartup.csชั้นเรียน แต่ฉันพบว่าตัวเองต้องลงทะเบียนจำนวนมากและConfigureServices()ดูใหญ่! ฉันรู้ว่าฉันอาจจะสร้างวิธีการขยายของวิธีการคงที่และเรียกมันจาก ConfigureService () `คลาส แต่สงสัยว่ามีวิธีที่ดีกว่า หากมีวิธีการลงทะเบียนการขึ้นต่อกันในคอนเทนเนอร์ IoC โดยไม่ต้องกำหนดทีละรายการเช่นนี้ services.AddScoped<Interface, Class>(); .... 200 lines later services.AddScoped<ISettings, Settings>()

3
วิธีการของโรงงานเทียบกับกรอบการฉีดใน Python - ทำความสะอาดคืออะไร
สิ่งที่ฉันมักจะทำในแอปพลิเคชันของฉันคือฉันสร้างบริการ / dao / repo / ลูกค้าทั้งหมดโดยใช้วิธีการจากโรงงาน class Service: def init(self, db): self._db = db @classmethod def from_env(cls): return cls(db=PostgresDatabase.from_env()) และเมื่อฉันสร้างแอปที่ฉันทำ service = Service.from_env() สิ่งที่สร้างการพึ่งพาทั้งหมด และในการทดสอบเมื่อฉันไม่ต้องการใช้ฐานข้อมูลจริงฉันเพียงแค่ทำ DI service = Service(db=InMemoryDatabse()) ฉันคิดว่ามันค่อนข้างไกลจากสถาปัตยกรรม clean / hex เนื่องจาก Service รู้วิธีสร้างฐานข้อมูลและรู้ว่าสร้างฐานข้อมูลประเภทใด (อาจเป็น InMemoryDatabse หรือ MongoDatabase) ฉันเดาว่าในสถาปัตยกรรม clean / hex ฉันจะมี class DatabaseInterface(ABC): @abstractmethod def …

2
วิธีการฉีดหรือใช้ IConfiguration ใน Azure Function V3 พร้อมการฉีดอ้างอิงเมื่อกำหนดค่าบริการ
โดยปกติในโครงการ. NET Core ฉันจะสร้างคลาส 'boostrap' เพื่อกำหนดค่าบริการของฉันพร้อมกับคำสั่งการลงทะเบียน DI นี่เป็นวิธีส่วนขยายIServiceCollectionที่ฉันสามารถเรียกวิธีการที่ชอบ.AddCosmosDbServiceและทุกสิ่งที่จำเป็นคือ 'อยู่ในตัวเอง' ในคลาสแบบสแตติกที่มีวิธีการนั้น กุญแจสำคัญคือว่าวิธีการได้รับIConfigurationจากStartupชั้นเรียน ฉันเคยทำงานกับ DI ในฟังก์ชั่น Azure ในอดีต แต่ยังไม่ผ่านข้อกำหนดเฉพาะนี้ ฉันใช้IConfigurationเพื่อผูกกับคลาสที่เป็นรูปธรรมพร้อมการตั้งค่าการจับคู่คุณสมบัติจากทั้งของฉันlocal.settings.jsonและการตั้งค่าแอปพลิเคชัน dev / การผลิตเมื่อฟังก์ชั่นการใช้งานใน Azure CosmosDbClientSettings.cs /// <summary> /// Holds configuration settings from local.settings.json or application configuration /// </summary> public class CosmosDbClientSettings { public string CosmosDbDatabaseName { get; set; } public string CosmosDbCollectionName …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.