.net - Using SimpleInjector with NServiceBus to inject IBus Bus property -


मैं अपनी निर्भरता इंजेक्शन कंटेनर का उपयोग करके NServiceBus 5 से प्राप्त करने की कोशिश कर रहा हूं, और < strong> SimpleInjector , जो चुनाव के बारे में हमारी कंटेनर है

एक तरह से NServiceBus बताने के लिए

ibus बस {मिल; सेट;}।

सभी ASP.NET MVC ApiControllers में संपत्ति (या कहीं और) एक कस्टम का उपयोग कर NServiceBusControllerActivator और NServiceBusDependencyResolverAdapter

< P> हालांकि, हम SimpleInjector का उपयोग करना चाहते हैं, और इसमें कोई MVC अनुप्रयोग नहीं है, और हम बस को नियंत्रकों में सीधे इंजेक्शन नहीं करना चाहते हैं। नियंत्रकों को हल्के वजन होना चाहिए, इसलिए तर्क "सेवाओं" के अंदर है, जो बदले में बस। भेजें (संदेश)

आप कैसे पूरा करेंगे इंजेक्शन लगाने बस संपत्ति SimpleInjector का उपयोग कर? मैं जानता हूँ कि NServiceBus साथ SImpleInjector को विन्यस्त लेकिन वे सिर्फ एक साथ काम नहीं करते।

जैसा कि आप पढ़ सकते हैं, मुझे और किजाणा ने एनएसआईएसआरबीएस के साथ सरल इंजेक्टर को एकीकृत करने के लिए एक पूर्ण समाधान के साथ आने की कोशिश की थी। किजाणा ने हालांकि समस्या (संग्रह के साथ जोड़कर) को पहले से ही लंबे समय तक हल किया है। हालांकि, वहाँ, NServiceBus के साथ एक कंटेनर को एकीकृत क्योंकि NServiceBus विरोधी पैटर्न को लागू करता है के साथ कई अन्य समस्याओं मुझे यकीन है कि अगर यह आप सही दिशा में मदद करता है नहीं कर रहा हूँ कर रहे हैं।

, लेकिन आप कर सकते हैं सरल इंजेक्टर का निर्माण -और ऐसे उदाहरण जो कहीं और बनाए जाते हैं और इससे गुणों में IBus इंजेक्शन लगाने की अनुमति मिलती है, जैसा कि पढ़ा जा सकता है और। संक्षेप में, आप इस तरह संपत्ति इंजेक्शन करने के लिए सरल इंजेक्टर को कॉन्फ़िगर कर सकते हैं:

  वर्ग संपत्ति चयनकर्ता और लेफ्टिनेंट; टैटेटि & gt; : IPropertySelectionBehavior जहां TAttribute: गुण {सार्वजनिक bool SelectProperty (प्रकार प्रकार, PropertyInfo प्रोप) {वापसी prop.GetCustomAttributes (typeof (TAttribute)) कोई भी ();। }} // उपयोग: var कंटेनर = नया कंटेनर (); Container.Options.PropertySelectionBehavior = नए प्रॉपर्टी चयनकर्ता उद्धारकर्ता & lt; आयात विशेषता & gt; (); container.RegisterSingle & LT; ibus & gt; (बस);  

और आप का निर्माण-अप करने के लिए सामान निम्नलिखित कोड का उपयोग कर सकते हैं:

  सार्वजनिक स्थिर निर्माण (वस्तु दृष्टान्त) {InstanceProducer निर्माता = container.GetRegistration (उदाहरण गेटटाइप (), थ्रोऑनफाइल्युअर: सच); पंजीकरण पंजीकरण = निर्माता। पंजीकरण; registration.InitializeInstance (उदाहरण); }  

Comments

Popular posts from this blog

c# - SignalR: "Protocol error: Unknown transport." when navigating to hub -

class - Kivy: how to instantiate a dynamic classes in python -

python - mayavi mapping a discrete colorbar on a surface -