2013-12-09 10 views
5
के साथ काम करने

मैं एक MVC4/WebAPI परियोजना है कि मैं Ninject 3. के साथ तार की मैं अनुरोध दायरे के भीतर संस्थाओं की एक संख्या भर में एक विशेष वस्तु साझा करना चाहते हैं कोशिश कर रहा हूँ मिल गया है, फिर भी मैं समझें कि मुझे InRequestScope (https://stackoverflow.com/a/10592203/173225) के कुछ प्रकार के कार्यान्वयन प्रदान करने की आवश्यकता है। मैंने गिटहब पर स्रोत देखा है और ऐसा लगता है कि यह HttpContext.Current वापस आता है। मैंने कोशिश की है कि:हो रही है InRequestScope Ninject और WebAPI

var messages = new List<string>(); 
kernel.Bind<IList<string>>() 
    .ToMethod(x => messages) 
    .WhenMemberHas<ServiceResultMessagesAttribute>() 
    .InScope(x => HttpContext.Current); 

कोई किस्मत के साथ। मैंने https://groups.google.com/d/msg/ninject/rC2vhj8yvBU/NAIkNA-QrAAJ में अनुशंसित के रूप में Ninject.Web.WebApi (# 9018) के लिए नवीनतम "अस्थिर" Nuget पैकेज का उपयोग करने का भी प्रयास किया है, लेकिन मुझे एक ही त्रुटि मिलती है (विधि get_InRequestScope में कार्यान्वयन नहीं है)।

गिटहब पर स्रोत के लिए, प्रासंगिक फाइलों के अंतिम अपडेट को लिखने के समय एक साल पहले 11 महीने से अधिक था, इसलिए मुझे नहीं पता कि यह अस्थिर Nuget पैकेज के साथ चालू है या नहीं (विशेष रूप से निनजेक्ट के लिए प्रलेखन की स्थिति दी गई)।

किसी को भी कैसे अनुरोध दायरे के भीतर एक से अधिक घटक भर में एक वस्तु का एक ही उदाहरण सुई का एक उचित काम कर उदाहरण दे सकते हैं?

धन्यवाद।

उत्तर

0

आप nuget से Ninject.Web.Common संदर्भ या कहीं और की जरूरत है और InRequestScope विधि का प्रयोग करेंगे।

var messages = new List<string>(); 
    kernel.Bind<IList<string>>() 
     .ToMethod(x => messages) 
     .WhenMemberHas<ServiceResultMessagesAttribute>() 
     .InRequestScope(); 
+1

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