मैं थोड़ा सोच रहा हूं कि कैसे निर्भरता इंजेक्शन को सीधे भाषा की तरह सी # में एकीकृत किया जा सकता है। मैं एक संभावित समाधान के साथ आया हूं, जिस पर मैं आपकी राय सुनना चाहता हूं। मैंने कई निर्भरता इंजेक्शन फ्रेमवर्क का उपयोग नहीं किया है इसलिए कुछ ऐसा हो सकता है जो मैं देख रहा हूं
वैसे भी, यह विचार एक कीवर्ड का उपयोग करके गुणों को "इंजेक्टेबल" घोषित करने में सक्षम है। जब किसी ऑब्जेक्ट को त्वरित किया जाता है, और उस संपत्ति को कंस्ट्रक्टर, या ऑब्जेक्ट इनिशलाइज़र के माध्यम से आरंभ नहीं किया जाता है, तो यह कुछ वैश्विक सेवा से उस संपत्ति प्रकार के उदाहरण का अनुरोध करता है।
इसी प्रकार आप उस सेवा के लिए विभिन्न प्रकार के हैंडलर पंजीकृत करते हैं ताकि आप इंजेक्ट किए गए संपत्ति प्रकार को तुरंत कर सकें।
इस तरह के आर्किटेक्चर IMO का उपयोग करने का उल्टा तरीका यह है कि यह काफी लचीला और उपयोग में आसान है। नकारात्मक पक्ष यह है कि हर बार जब आप इंजेक्शन लगाने वाले वर्ग को आरंभ करते हैं, तो एकल को कॉलआउट करने के कुछ ओवरहेड हो सकते हैं।
तब फिर से यह केवल उन वर्गों के लिए एक मुद्दा है जो उच्च प्रदर्शन समाधान में अक्सर त्वरित होते हैं, इसलिए यह एक मुद्दा नहीं होना चाहिए। शायद आप उन उदाहरणों में किसी प्रकार के कारखाने का उपयोग कर सकते हैं।
सोचा, मुद्दे, सवाल, बेहतर विचार?
कोड
public class SomeClass
{
public SomeClass()
{
//implicit behavior if Animal is not set in constructor or initializer
this.Animal = GlobalInjector.Get(this,typeof(Mammal))
}
public injectable Mammal Animal
{
get;
set;
}
}
GlobalInjector.Register(typeof(Mammal), () => return new Mammal(someParameter));