के साथ कन्स्ट्रक्टर स्ट्रिंग तर्कों का कन्वेंशन आधारित बाध्यकारी मैं अपने प्रोजेक्ट में आईओसी कंटेनर के रूप में निनजेक्ट का उपयोग कर रहा हूं। मेरे पास निम्न वर्ग है:निनजा
public class SomeRepository:ISomeRepository
{
public SomeRepository(string someDatabaseConnectionString)
{
// some code here..
}
}
मेरी एप्लिकेशन सेटिंग्स फ़ाइल में मेरे पास "someDatabase" नामक कनेक्शन स्ट्रिंग है। डिफ़ॉल्ट रूप से एक आदेश निर्माता में इस कनेक्शन स्ट्रिंग इंजेक्षन करने के लिए निम्न विन्यास जोड़ना चाहिए:
kernel.Bind<ISomeRepository>()
.To<SomeRepository>()
.WithConstructorArgument("someDatabaseConnectionString", connString);
लेकिन मैं लागू करने के लिए इस तरह के तार के पारंपरिक बंधन आधारित चाहते हैं। स्ट्रिंग प्रकार के सभी कन्स्ट्रक्टर पैरामीटर के लिए मान जिन्हें "कनेक्शनस्ट्रिंग" के साथ समाप्त होता है, एप्लिकेशन के कनेक्शन से लिया जाना चाहिए स्ट्रिंग कॉन्फ़िगरेशन अनुभाग और स्वचालित रूप से इंजेक्शन दिया जाना चाहिए। मैं एपसेटिंग अनुभाग के लिए भी इसी तरह के सम्मेलन को लागू करना चाहता हूं। यह दृष्टिकोण मार्क सीमन के "Primitive Dependencies" आलेख ("प्राइमेटिव्स के लिए सम्मेलन" अनुभाग) में अधिक जानकारी में वर्णित है। कैसल विंडसर कंटेनर उदाहरणों में इस्तेमाल किया गया था।
क्या निनजेक्ट का उपयोग करके इस तरह के सम्मेलनों को लागू करना संभव है और ऐसा करने का सबसे अच्छा तरीका क्या है? मैंने पहले से ही ninject.extensions.conventions की कोशिश की है लेकिन लगता है कि इसमें ऐसी कार्यक्षमता नहीं है, है ना?
क्या आप ConfigManager.AppSettings ["someDatabaseConnectionString"] का उपयोग कर सकते हैं? – Ben
वर्तमान में मैं ConfigurationManager.AppSettings ["someDatabaseConnectionString"] का उपयोग कर रहा हूं। लेकिन कल्पना करें कि आपके पास 20 या अधिक कक्षाएं हैं जो कनेक्शन स्ट्रिंग से निर्भर हैं। मैं इन वर्गों में से प्रत्येक के लिए विशिष्ट नियम नहीं लिखना चाहता हूं, मैं निर्भरता को स्वचालित रूप से इंजेक्ट करना चाहता हूं। –