मैंने इस पूरे धागे को दो बार पढ़ा, और मुझे लगता है कि लोग जो जानते हैं उसका जवाब दे रहे हैं, जो नहीं पूछा गया है।
जेपी का मूल प्रश्न ऐसा लगता है कि वह एक रिसॉल्वर भेजकर वस्तुओं का निर्माण कर रहा है, और फिर कक्षाओं का एक समूह है, लेकिन हम यह मान रहे हैं कि वे वर्ग / वस्तुएं स्वयं सेवाएं हैं, इंजेक्शन के लिए परिपक्व हैं। अगर वे नहीं हैं तो क्या होगा?
जेपी, यदि आप DI का लाभ उठा रहे हैं और संदर्भ डेटा के साथ इंजेक्शन मिश्रण की महिमा चाहते हैं, तो इनमें से कोई भी पैटर्न (या माना जाता है "विरोधी पैटर्न") विशेष रूप से संबोधित नहीं करते हैं। यह वास्तव में एक पैकेज का उपयोग करने के लिए उबालता है जो इस तरह के प्रयास में आपका समर्थन करेगा।
Container.GetSevice<MyClass>(someObject1, someObject2)
... इस प्रारूप का समर्थन शायद ही कभी किया जाता है। मेरा मानना है कि इस तरह के समर्थन की प्रोग्रामिंग की कठिनाई, दुखी प्रदर्शन में जोड़ा गया जो कार्यान्वयन के साथ जुड़ा होगा, यह ओपनसोर्स डेवलपर्स के लिए अनाकर्षक बनाता है।
लेकिन यह किया जाना चाहिए, क्योंकि मुझे MyClass'es के लिए एक कारखाना बनाने और पंजीकृत करने में सक्षम होना चाहिए, और उस कारखाने को डेटा / इनपुट प्राप्त करने में सक्षम होना चाहिए जिसे केवल "सेवा" के रूप में पारित करने के लिए धक्का नहीं दिया गया है। डेटा। यदि "एंटी-पैटर्न" नकारात्मक परिणामों के बारे में है, तो डेटा / मॉडल पास करने के लिए कृत्रिम सेवा प्रकारों के अस्तित्व को मजबूर करना निश्चित रूप से नकारात्मक है (अपने वर्गों को कंटेनर में लपेटने के बारे में आपकी भावना के बराबर)।
ऐसे ढाँचे हैं, जो मदद कर सकते हैं, हालाँकि, भले ही वे थोड़े बदसूरत दिखते हों। उदाहरण के लिए, Ninject:
कंस्ट्रक्टर में अतिरिक्त मापदंडों के साथ Ninject का उपयोग करके एक उदाहरण बनाना
यह .NET के लिए लोकप्रिय है, और अभी भी उतना ही साफ है जितना इसे होना चाहिए, लेकिन मुझे यकीन है कि आप जिस भी भाषा में काम करना चाहते हैं उसमें कुछ है।