2009-01-27 2 views
5

उदाहरण के लिए मैं दो इंटरफेस है।कैसल विंडसर एक कक्षा का जवाब कैसे देता है जो कई इंटरफेस लागू करता है? ICustomerService और IOrderService जो प्रत्येक GetCustomer, GetOrder, आदि</p> <p>जैसे कार्यों की एक जोड़ी मैं एक वर्ग दोनों इंटरफेस लागू करना चाहते हैं:: सर्वर

कैसल विंडसर इसका जवाब कैसे देता है? क्या यह पहली जगह में संभव है? जब मैं दो इंटरफेस में से किसी एक के आधार पर सर्वर ऑब्जेक्ट को हल करता हूं, तो क्या मुझे वही ऑब्जेक्ट मिल जाएगा? क्या होता है जब मेरे पास एक कन्स्ट्रक्टर होता है जिसमें दोनों पैरामीटर में इंटरफेस होते हैं? क्या अभी भी एक वस्तु बन जाएगी।

मानते हैं कि लाइफस्टाइल को इसके डिफ़ॉल्ट पर छोड़ दिया गया है: सिंगलटन।

उत्तर

3

क्या आपने this post चेक किया था?

Here भी

Forum post भी इस

+1

हां, मैंने उन्हें चेक किया है। पहली पोस्ट मेरे प्रश्न के समान नहीं है, दूसरी पोस्ट में त्रुटि कैसल के पुराने संस्करण के कारण होती है। परीक्षण वाले पद से कोड फ़ाइल उपयोगी है, यह दिखाती है कि केवल एक वस्तु का उपयोग किया जाता है। –

+1

फ़ोरम पोस्ट में समाधान –

+0

फ़ोरम पोस्ट एक मृत लिंक है; [यह उत्तर] (http://stackoverflow.com/a/684392/322283) उपयोगी है; जैसा कि क्रिस्ट्ज़ोफ का उत्तर नीचे है। – Marijn

3

पर जानकारी वहाँ एक CLR प्रकार और एक विंडसर सेवा या घटक (glossary if needed is here) के बीच कोई मुश्किल से एक-से-एक मानचित्रण है है।

तो तुम निम्न परिदृश्यों से कोई भी कर सकते हैं:

  • विभिन्न कार्यान्वयन प्रकार के साथ कई अवयव एक भी सेवा का पर्दाफाश

    container.Register(
        Component.For<IFoo>().ImplementedBy<Foo1>(), 
        Component.For<IFoo>().ImplementedBy<Foo2>() 
    ); 
    
  • ही कार्यान्वयन प्रकार के साथ कई अवयव एक भी सेवा का पर्दाफाश

    container.Register(
        Component.For<IFoo>().ImplementedBy<Foo1>(), 
        Component.For<IFoo>().ImplementedBy<Foo1>().Named("second") 
    ); 
    
  • मैन एक ही कार्यान्वयन प्रकार के साथ y घटक अलग सेवा

    container.Register(
        Component.For<IFoo, Bar>().ImplementedBy<Foo1>() 
    ); 
    

बेनकाब आप देख सकते हैं विभिन्न सेवाओं

container.Register(
    Component.For<IFoo>().ImplementedBy<Foo1>(), 
    Component.For<IBar>().ImplementedBy<Foo1>().Named("second") 
); 
  • एकल घटक का पर्दाफाश, हाँ - यह संभव है, और चाहे या नहीं आप करेंगे एक ही उदाहरण प्राप्त करें (सिंगलटन मानते हुए) इस बात पर निर्भर करता है कि आपने किस विकल्प को चुना है - यदि दोनों सेवाओं को उसी घटक द्वारा उजागर किया जाएगा, या नहीं।

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

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