सृजन के बिंदु से पारित होने वाले पैरामीटर के साथ कक्षा को पंजीकृत करना संभव है?डेल्फी - spring4d निर्भरता इंजेक्शन ढांचे में एक कन्स्ट्रक्टर के लिए तत्काल से पैरामीटर कैसे पास करें?
मैं जानता हूँ कि यह कुछ इस तरह किया जा सकता है:
GlobalContainer.RegisterType<TUserProcessor>.Implements<IUserUpgrader>.
AsTransient.DelegateTo(
function: TUserProcessor
begin
Result := TUserProcessor.Create(GetCurrentUser);
end
);
लेकिन वहाँ मानकों निष्पादन संदर्भ में, जहां कंटेनर पंजीकृत हो जाता है और वस्तु मिलता है intantiated जहां नहीं से आबद्ध कर रहे हैं।
ऐसा कुछ उदाहरण के लिए संभव है?
GlobalContainer.Resolve<IMathService>([FCurrentUser]);
मैं जानता हूँ कि कुछ peoble वकील बहुत ही सरल कंस्ट्रक्टर्स के लिए है, लेकिन कई बार जब एक निर्माता पैरामीटर स्पष्ट रूप से जाने का रास्ता दिखता हैं:
वस्तु का निर्माण काम करने के लिए वस्तु पैरामीटर की जरूरत है, तो संदर्भ संतुष्ट होना चाहिए। पैरामीटर भी वर्ग को देखकर उस बाधा को और अधिक स्पष्ट बनाता है।
आप किसी विधि या प्रॉपर्टी में संदर्भ असाइन कर सकते हैं और यदि आप पहले असाइनमेंट किए बिना ऑब्जेक्ट का उपयोग करने का प्रयास करते हैं तो मुझे अन्य सभी तरीकों में उठाएं और अपवाद दें .. मुझे इस प्रकार के कोड को लिखना पसंद नहीं है, यह बस एक है समय की बर्बादी, केवल कन्स्ट्रक्टर पैरामीटर का उपयोग करें और वहां जांचें। कम कोड, बेहतर आईएमओ।
इसके अलावा ऑब्जेक्ट को उस ऑब्जेक्ट में स्थानीय रूप से पारित किया जा रहा है जो कंटेनर (उदाहरण के लिए एक लेनदेन ऑब्जेक्ट) का उपयोग करके नई ऑब्जेक्ट बनाता है और इसमें कुछ राज्य है (यह एक नई वस्तु नहीं है जिसे मैं कंटेनर के साथ प्राप्त कर सकता हूं)।
मैं 'TContainer.Resolve' की एक अधिभार Spring4D में एक सरणी पैरामीटर को स्वीकार करने की पता नहीं है। क्या मुझे कुछ याद आती है? –
menjaraz
@menjaraz यह सिर्फ यह विचार था कि इसे कैसे कार्यान्वित किया जा सकता है (निश्चित रूप से इसे आरटीटीआई के साथ डोंडे किया जा सकता है) –
ठीक है, यह सुविधा अनुरोध की तरह लगता है। [Spring4d Google समूह] (http://groups.google.com/group/spring4d) पर भी पोस्ट क्यों न करें? – menjaraz