मैं एक मॉड्यूल बनाना चाहता हूं जो नामांकित एनोटेशन के लिए गतिशील रूप से बाध्य करता है। उपयोग का मामला है कि मैं अपने कॉन्फ़िगरेशन में मूल्यों को स्वचालित रूप से @ नामित मान वाले गुण फ़ाइल में कुंजी के साथ जोड़ना चाहता हूं।आप गुइस में गतिशील बाइंडिंग कैसे करते हैं जिसके लिए एक इंजेक्शन इंस्टेंस की आवश्यकता होती है?
हालांकि कॉन्फ़िगरेशन एक अलग मॉड्यूल में बंधे हैं इसलिए मुझे इंजेक्शन देने के लिए कॉन्फ़िगर की आवश्यकता है। जिन समाधानों पर मैंने देखा है वे हैं:
कॉन्फ़िगर() विधि में बाध्यकारी। इस विधि को इंजेक्शन नहीं दिया गया है और मुझे बेस कॉन्फ़िगरेशन नहीं मिल रहा है।
प्रदाता/@ प्रदान करता है। प्रदाता केवल एक ही उदाहरण बांधते हैं।
मल्टीबिंडर का उपयोग करना। मेरा उपयोग मामला थोड़ा अलग है तो इस एक्सटेंशन द्वारा प्रदान किया जाता है। बहु-बाध्यकारी आपको कई उदाहरणों को अलग-अलग बाध्य करने की अनुमति देता है और फिर उन्हें संग्रह के रूप में इंजेक्शन दिया जाता है जिसमें अधिक जटिल प्रकार होता है। मैं प्रत्येक उदाहरण को अलग से बांधना चाहता हूं और बाद में इंजेक्शन के लिए विशिष्ट रूप से पहचाना जा सकता हूं।
एक बच्चे इंजेक्टर का प्रयोग करें। दुर्भाग्य से मौजूदा कोड के कुछ व्यापक संशोधन के बिना यह संभव नहीं है। This answer इस समस्या को हल करने के तरीके के बारे में बहुत अच्छा वर्णन है।
किसी भी तरह बाइंडर इंजेक्ट करें। (मुझे थोड़ा हैकर प्राप्त करना शुरू हुआ) गुइस इंजेक्टर को बाद के उपयोग के लिए इंजेक्शन देने की इजाजत देता है, मैंने मॉड्यूल में बाइंडर को इंजेक्शन करने की कोशिश की, हालांकि @ प्रोवाइड विधि और फिर विधि के भीतर कई बाइंड बनाने के लिए सीधे बांधने की मशीन का उपयोग किया। गुइंड बाइंडर इंजेक्ट नहीं करेगा।
एक और अच्छा जवाब, धन्यवाद! मुझे नाम.बिंडप्रॉपर्टीज() विधि के बारे में पता नहीं था, मुझे इसे बाद में सहेजना होगा। मैंने कल रात 2 में प्रस्तावित समाधान की कोशिश की और यह ज्यादातर काम करता था, हालांकि यह उतना साफ नहीं था जितना मुझे पसंद आया होगा। मैं मूल रूप से इस निष्कर्ष पर आया कि जो मैं वास्तव में करना चाहता हूं वह गिइस के डिजाइन के बाहर आता है। मेरे पास उस ढांचे का स्वामित्व नहीं है जिसे मैं तैनात कर रहा हूं और मुझे विश्वास नहीं है कि बच्चे इंजेक्टर किसी भी समय जल्द ही उपलब्ध सुविधा होगी, इसलिए मैं अपनी कॉन्फ़िगरेशन को थोड़ा अलग तरीके से फिर से करने जा रहा हूं। तत्काल उत्तर के लिए धन्यवाद हालांकि! –