मैं अभी डेल्फी स्प्रिंग फ्रेमवर्क के साथ शुरुआत कर रहा हूं और यह सोच रहा था कि डीआई कंटेनर का वर्तमान संस्करण किसी भी प्रकार के कार्यान्वयन प्रकार को निर्दिष्ट किए बिना फैक्ट्री विधि में निर्माण का प्रतिनिधि बनने की अनुमति देता है या नहीं?डेल्फी स्प्रिंग डी: क्या कार्यान्वयन प्रकार के बिना इंटरफ़ेस तत्कालता को प्रतिनिधि बनाना संभव है?
उदा। इस तरह कुछ:
GlobalContainer
.RegisterFactory<ISomeObject>(
function: ISomeObject
begin
Result := CreateComObject(CLASS_SomeObject) as ISomeObject;
end)
.Implements<ISomeObject> // could probably be implied from the above
.AsSingletonPerThread;
जैसा कि आप देख सकते हैं, मेरा विशिष्ट उपयोग केस COM वस्तुओं का तात्कालिकता है। उस स्थिति में जिस इंटरफ़ेस में दिलचस्पी है, वह मेरे आवेदन का हिस्सा नहीं है, लेकिन मैं अभी भी CreateComObject
/CoCreateInstance
पर कॉल करके उदाहरण बनाने में सक्षम हूं। हालांकि, ऐसा लगता है कि मैं भाग्य से बाहर हूं क्योंकि कंटेनर में पंजीकरण हमेशा एक वास्तविक कार्यान्वयन वर्ग से जुड़ा हुआ प्रतीत होता है।
मान लीजिए कि इस समय इस तरह से संभव नहीं है, आप इस विशेषज्ञ को कैसे संबोधित करेंगे? क्या आप एक रैपर क्लास या डमी क्लास बनायेंगे या आप सीधे डीआई कंटेनर से COM ऑब्जेक्ट्स रखेंगे और बस उन्हें CreateComObject
के माध्यम से तुरंत चालू करेंगे?
अपडेट के लिए धन्यवाद! ये तो बहुत खूब है! :) –