2012-11-27 4 views
5

सवाल बहुत सरल है। मैं कुल AutoFac कंटेनर तक पहुंच बनाना चाहता हूं ताकि मैं इसमें अपनी निर्भरता पंजीकृत कर सकूं।ऑर्चर्ड में निर्भरता पंजीकृत करने के लिए समग्र ऑटोफ़ैक कंटेनर तक कैसे पहुंचे?

टिप्पणी:

मैं अपने प्रोजेक्ट में IDependency कारण यह (दो विधानसभाओं के) एक परिपत्र संदर्भित में जो परिणाम से इनहेरिट .क्या मैं चाहता हूँ करने के साथ ठीक नहीं कर रहा हूँ एक कुंजी है और यह उपयोग के साथ एक घटक का पंजीकरण है अन्य असेंबली में एक ही कुंजी के साथ। अग्रिम धन्यवाद।

संपादित करें:

मैं एक वर्ग कोर में DefaultOrchardHostContainer बुलाया पाया है, लेकिन यह केवल Resolve<> विधि नहीं बल्कि Register() उजागर करता है।

+2

प्रदान किया गया उत्तर ठीक है, लेकिन मैं आपके वास्तविक परिपत्र संदर्भ मुद्दे पर कुछ जानकारी प्रदान करना चाहता हूं। ऑर्चर्ड में, निर्भरता इंजेक्शन के लिए इंटरफ़ेस मैपिंग इंटरफ़ेस नाम पर किया जाता है, ताकि आप वास्तव में दो मॉड्यूल में एक ही इंटरफ़ेस नाम परिभाषित कर सकें और उन्हें समान माना जाएगा। यह कोर मॉड्यूल में कई स्थानों पर प्रयोग किया जाता है। अन्य प्रकार के परिपत्र संदर्भों के लिए, सर्कल को तोड़ने के लिए एक टी 0 के बजाय कार्य या एक आलसी का उपयोग करना भी संभव है। –

+0

@ आप एक सुपर आदमी हैं। बहुत सारे धन्यवाद। मैं इंटरफ़ेस मैपिंग के लिए इंटरफ़ेस नाम का उपयोग करने के बारे में भी कल्पना नहीं कर सकता। यह ऑर्चर्ड में निर्भरता इंजेक्शन के बारे में जानकारी बहुत उपयोगी थी। मैं आपसे यह सामान सीखने के साथ बहुत भाग्यशाली हूं। मैं आपकी प्रतिक्रिया की सराहना करता हूं। –

उत्तर

7

आप सीधे अपने ऑर्चर्ड मॉड्यूल में ऑटोफैक मॉड्यूल जोड़ सकते हैं और ऑर्चर्ड इसे उठाएगा। पूर्व ...

public class MyModule : Module { 
    protected override void Load(ContainerBuilder builder){ 
     builder.RegisterType<MyDependency>().As<IMyDependency>().InstancePerDependency(); 
    } 
} 
+1

निर्भरता स्वयं दो असेंबली के बीच संदर्भ नहीं दे रही है। मेरे पिछले प्रश्न की जांच करें http://stackoverflow.com/questions/13507505/how-to-resolve-a- निर्भरता-between-two-tightly-coupled-namespacein- अधिक जानकारी के लिए अलग-अलग। –

+0

क्या आप कृपया "ऑर्चर्ड मॉड्यूल" से क्या मतलब है इसका उल्लेख कर सकते हैं? –

+0

मुझे लगता है कि मेरा समाधान यह होना चाहिए "आप सीधे अपने ऑर्चर्ड मॉड्यूल में ऑटोफैक मॉड्यूल जोड़ सकते हैं और ऑर्चर्ड इसे उठाएगा।" –

संबंधित मुद्दे