2012-12-18 17 views
5

साथ एक सामान्य प्रकार के सभी कार्यान्वयन के लिए स्कैन करने के लिए कैसे हम डोमेन घटनाओं पद्धति का उपयोग कर रहे हैं और हमारे आईओसी कंटेनर पर झुकाव घटना की एक विशेष प्रकार के लिए संचालकों का पता लगाने की:Ninject

public interface IHandleEvent<TEvent> where TEvent : IEvent 
{ 
    void Handle(TEvent evnt); 
} 

हम StructureMap के साथ स्कैन कर सकते हैं और सभी प्रकार रजिस्टर इसलिए की तरह ऊपर इंटरफ़ेस को लागू करने:

Scan(cfg => 
{ 
    cfg.TheCallingAssembly(); 
    cfg.ConnectImplementationsToTypesClosing(typeof(IHandleEvent<>)); 
}); 

वहाँ Ninject के साथ एक बराबर है?

वर्तमान में मैं इतना की तरह अलग-अलग हैंडलर बाध्य करने के लिए हो रही है:

kernel.Bind<IHandleEvent<SomeEvent>>().To<EventHandler1>(); 
kernel.Bind<IHandleEvent<SomeEvent>>().To<EventHandler2>(); 
kernel.Bind<IHandleEvent<SomeOtherEvent>>().To<EventHandler3>(); 

उत्तर

5

Ninject Conventions Extensions की कोशिश करो। यह निनजेक्ट के लिए सम्मेलन द्वारा एक विन्यास प्रदान करता है। विकी में काफी अच्छा दस्तावेज है।

4

निनजेक सम्मेलन एक्सटेंशन पैकेज ने मुझे वही किया जो मुझे चाहिए। कार्य कोड नीचे है:

kernel.Bind(x => x 
    .FromThisAssembly() 
    .SelectAllClasses().InheritedFrom(typeof(IHandleEvent<>)) 
    .BindSingleInterface()); 
संबंधित मुद्दे