2010-03-29 6 views
7

स्ट्रक्चर मैप न्यूबी प्रश्न।संरचना मैप: अपने सभी इंटरफेस के लिए एक ही उदाहरण कैसे पंजीकृत करें

public class SomeClass: IInterface1, IInterface2 { 
} 

मैं पारित करने के लिए निम्न परीक्षण करना चाहते हैं:

Assert.AreSameInstance(
    container.GetInstance<IInterface1>(), 
    container.GetInstance<IInterface2>()); 

मैं इस का एक स्पष्ट पंजीकरण कैसे करना होगा?

मैं जानता हूँ कि महल विंडसर में मैं

kernel.Register(Component.For(typeof(IInterface1), typeof(IInterface2)) 
    .ImplementedBy(typeof(SomeClass)); 

की तरह कुछ करना होगा लेकिन मैं नहीं विंडसर के लिए किसी भी बराबर एपीआई

+1

स्टिक देख पा रहे हैं :) –

+0

तुम सिर्फ करने के लिए यह नहीं बता सकते हैं उन्हें सिंगलटन के रूप में तुरंत चालू करें? – Jaxidian

+0

अच्छा ... हाँ, लेकिन प्रत्येक इंटरफेस को लागू करने के लिए एक ही सिंगलटन उदाहरण कैसे प्राप्त करें? स्पष्ट होने के लिए, केवल एक SomeClass उदाहरण को तत्काल चालू किया जाना चाहिए। –

उत्तर

15
ObjectFactory.Initialize(x => 
{ 
    x.For<IInterface1>().Singleton().Use<MyClass>(); 
    x.Forward<IInterface1, IInterface2>(); 
}); 
+0

बहुत बढ़िया धन्यवाद फिल! –

+0

युक्ति: यदि यह आपके लिए काम नहीं कर रहा है तो सुनिश्चित करें कि आपके पास फॉरवर्ड() के लिए सही तरीके से दो प्रकार के पैरामीटर हैं। मुझे यह मानकर पकड़ा गया कि यह पहले "वैकल्पिक" प्लगइन प्रकार था। – Schneider

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