ฉันอ่านกระทู้ทั้งหมดนี้สองครั้งและฉันคิดว่าผู้คนตอบสนองโดยสิ่งที่พวกเขารู้ไม่ใช่สิ่งที่ถูกถาม
คำถามดั้งเดิมของ JP ดูเหมือนว่าเขาจะสร้างวัตถุโดยการส่งตัวแก้ปัญหาแล้วเรียนเป็นกลุ่ม แต่เราสมมติว่าคลาส / วัตถุเหล่านั้นเป็นบริการของตัวเอง เกิดอะไรขึ้นถ้าพวกเขาไม่ได้?
JP หากคุณกำลังมองหาที่จะใช้ประโยชน์จาก DI และต้องการได้รับเกียรติจากการผสมการฉีดเข้ากับข้อมูลเชิงบริบทไม่มีรูปแบบเหล่านี้ (หรือที่เรียกว่า "รูปแบบการต่อต้าน") กล่าวโดยเฉพาะ อันที่จริงแล้วการใช้แพ็คเกจซึ่งจะช่วยคุณในความพยายามดังกล่าว
Container.GetSevice<MyClass>(someObject1, someObject2)
... รูปแบบนี้ไม่ค่อยรองรับ ฉันเชื่อว่าความยากลำบากในการเขียนโปรแกรมการสนับสนุนดังกล่าวเพิ่มให้กับประสิทธิภาพที่น่าสังเวชซึ่งจะเกี่ยวข้องกับการใช้งานทำให้ไม่น่าสนใจสำหรับนักพัฒนาโอเพนซอร์ซ
แต่ควรทำเพราะฉันควรจะสามารถสร้างและลงทะเบียนโรงงานสำหรับ MyClass'es และโรงงานนั้นควรจะสามารถรับข้อมูล / อินพุตที่ไม่ได้ถูกผลักดันให้กลายเป็น "บริการ" เพียงเพื่อประโยชน์ในการผ่าน ข้อมูล. หาก "รูปแบบการต่อต้าน" เป็นเรื่องเกี่ยวกับผลกระทบเชิงลบดังนั้นการบังคับให้มีบริการประเภทเทียมสำหรับการส่งผ่านข้อมูล / รุ่นนั้นเป็นผลลบอย่างแน่นอน
มีกรอบที่อาจช่วยแม้ว่าพวกเขาจะดูน่าเกลียดเล็กน้อย ตัวอย่างเช่น Ninject:
การสร้างอินสแตนซ์โดยใช้ Ninject พร้อมพารามิเตอร์เพิ่มเติมในตัวสร้าง
สำหรับ NET. นั้นเป็นที่นิยมและยังไม่มีที่ไหนที่สะอาดเท่าที่ควร แต่ฉันแน่ใจว่ามีบางอย่างในภาษาที่คุณเลือกใช้