का उपयोग कर एकाधिक असेंबली से निर्भरता इंजेक्शन मैं डी अवधारणा के लिए नया हूं और स्ट्रक्चरमैप के लिए नया हूं। मैं एक परिदृश्य को भरने की कोशिश कर रहा हूं जहां मेरे सभी इंटरफेस AssemblyA
में हैं और मेरे सभी कार्यान्वयन AssemblyB
में हैं। मैं Structuremap उपयोग करने के लिए निर्माता में AssemblyB
वर्ग जहाँ से AssemblyA
स्ट्रक्चरमैप
public class Customer(ICustomerService)
{
}
ICustomerService
इंटरफेस पर निर्भरता है AssemblyA
में है और CustomerService
वर्ग assemblyB
में है के कहने इंजेक्षन करना चाहते हैं। मैं इस कंस्ट्रक्टर में CustomerService
उदाहरण इंजेक्ट करने के लिए स्ट्रक्चरमैप चाहता हूं। मुझे लगता है कि यदि वर्ग का नाम इंटरफेस के नाम के समान है और I
है। संरचनामैप इसे स्वचालित रूप से पहचान लेगा।
मैंने निम्न कॉन्फ़िगरेशन लिखा है।
x =>
{
x.Scan(scan =>
{
scan.Assembly("AssemblyA");
scan.Assembly("AssemblyB");
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
लेकिन यह मुझे त्रुटि
StructureMap Exception Code: 202
No Default Instance defined for PluginFamily AssemblyA.ICustomerService, AssemblyA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
देता है किसी भी मदद के लिए उपयोगी हो जाएगा। मैं डिफ़ॉल्ट सम्मेलनों का उपयोग करना चाहता हूं और प्रत्येक इंटरफ़ेस को कक्षा में पंजीकृत करने से बचाना चाहता हूं।
धन्यवाद।
ठीक है, मैं समझ रहा था कि क्या हो रहा था। मेरे पास कई वर्ग थे जो विभिन्न असेंबली में इंटरफ़ेस को कार्यान्वित कर रहे थे जिन्हें मैं स्कैन कर रहा था। यह उस मूल त्रुटि का उत्पादन करता है जिसे मैंने प्रश्न में बताया था। प्रश्न में मैंने जो कोड पोस्ट किया है, उसे सही ढंग से काम करना चाहिए यदि केवल एक वर्ग है जो सभी स्कैनिंग असेंबली में एसएम के डिफ़ॉल्ट सम्मेलन को पूरा करता है। इससे पहले कि वह इससे पहले न हो, लेकिन उम्मीद है कि इससे किसी को भी उसके सिर पर टक्कर लगी है। जैसे ही मैंने x.IncludeNamespace ("assemblyA") जोड़ा; लाइन मूल रूप से मैंने एसएम के लिए कक्षा असेंबली फ़िल्टर की और यह काम करना शुरू कर दिया :) –