मुझे पता है कि कुछ डी ढांचे इस का समर्थन करते हैं (उदा। Ninject), लेकिन मैं विशेष रूप से जानना चाहता हूं कि Autofac के साथ यह संभव है या नहीं।ऑटोफैक स्वचालित स्व-बाध्यकारी कर सकता है?
मैं एक ठोस वर्ग के लिए ऑटोफैक कंटेनर से पूछने में सक्षम होना चाहता हूं, और उस ठोस वर्ग को पंजीकृत किए बिना सभी उपयुक्त कन्स्ट्रक्टर निर्भरताओं इंजेक्शन के साथ एक उदाहरण वापस प्राप्त करना चाहता हूं। अर्थात, और अगर मैं यह स्पष्ट रूप से बाध्य कभी नहीं, तो स्वचालित रूप से ठोस वर्ग खुद को, बाँध के रूप में अगर मैं builder.Register<MyClass>();
ViewModels बुलाया था जब यह उपयोगी होगा का एक अच्छा उदाहरण है। एमवीवीएम में, लेयरिंग ऐसा है कि केवल व्यू व्यूमोडेल पर निर्भर करता है, और वह ढीली टाइपिंग के माध्यम से, और आप वैसे भी यूनिट-टेस्ट नहीं देखते हैं। तो परीक्षण के लिए ViewModel को नकल करने की कोई आवश्यकता नहीं है - और इसलिए प्रत्येक व्यूमोडेल के लिए इंटरफ़ेस रखने का कोई कारण नहीं है। तो इस मामले में, "इस वर्ग को हल करने के लिए इस इंटरफेस को पंजीकृत करें" का सामान्य डी पैटर्न अनावश्यक जटिलता है। स्पष्टीकरण स्व-बाध्यकारी, जैसे builder.Register<MyClass>();
, कंक्रीट वर्ग के रूप में सीधे कुछ के साथ व्यवहार करते समय भी एक अनावश्यक कदम की तरह लगता है।
मैं ऑटोफैक दस्तावेज़ों में reflection-based registration example से अवगत हूं, लेकिन यह मेरे स्वाद के लिए भी नहीं है। मैं समय से पहले हर संभावित वर्ग को पंजीकृत करने की जटिलता (और धीमा) नहीं चाहता; मैं ढांचा चाहता हूं कि जब मुझे इसकी ज़रूरत हो तो मुझे क्या चाहिए। विन्यास पर सम्मेलन, और वह सब।
ऑटोफैक को कॉन्फ़िगर करने का कोई तरीका है तो यह कह सकता है "ओह, यह एक ठोस प्रकार है, और कोई भी इसे पंजीकृत नहीं करता है, इसलिए मैं बस कार्य करता हूं जैसे कि यह डिफ़ॉल्ट सेटिंग्स के साथ पंजीकृत था"?
मीठा - ठीक वैसे ही लगता है जो मैं खोज रहा था। धन्यवाद! –