ไลบรารี Inject (In) Dependency Inject (มิตร)
ฉันไตร่ตรองการออกแบบห้องสมุด C # ที่จะมีฟังก์ชั่นระดับสูงที่แตกต่างกันหลายอย่าง แน่นอนว่าฟังก์ชั่นระดับสูงเหล่านั้นจะถูกนำไปใช้โดยใช้หลักการออกแบบคลาสSOLIDให้มากที่สุด ดังนั้นจึงอาจมีคลาสที่ตั้งใจให้ผู้บริโภคใช้โดยตรงเป็นประจำและ "คลาสที่รองรับ" ที่ขึ้นต่อกันของคลาส "ผู้ใช้ปลายทาง" ทั่วไป คำถามคือวิธีที่ดีที่สุดในการออกแบบห้องสมุดคือ: ผู้ไม่เชื่อเรื่องพระเจ้า - แม้ว่าการเพิ่ม "การสนับสนุน" พื้นฐานสำหรับหนึ่งหรือสองของห้องสมุด DI ทั่วไป (โครงสร้างแผนที่, Ninject, ฯลฯ ) ดูเหมือนว่าสมเหตุสมผลฉันต้องการให้ผู้บริโภคสามารถใช้ห้องสมุดที่มีกรอบ DI ใด ๆ ใช้งานไม่ได้ DI - หากผู้บริโภคของห้องสมุดไม่ใช้ DI ห้องสมุดก็ควรจะใช้งานได้ง่ายที่สุดเท่าที่จะเป็นไปได้ลดปริมาณงานที่ผู้ใช้ต้องทำเพื่อสร้างการพึ่งพา "ไม่สำคัญ" เหล่านี้ทั้งหมดเพียงเพื่อ คลาส "ของจริง" ที่พวกเขาต้องการใช้ ความคิดปัจจุบันของฉันคือการจัดหา "DI registration modules" สองสามข้อสำหรับไลบรารี DI ทั่วไป (เช่นรีจิสทรี StructureMap, โมดูล Ninject) และชุดชั้นเรียนหรือชุดโรงงานที่ไม่ได้เป็น DI …