के रूप में काम नहीं कर रहा है, मैं अपने वेब एपीआई एप्लिकेशन के साथ ninject mvc3 प्लगइन का उपयोग कर रहा हूं। मैं एक बाध्यकारी है कि तरह लग रहा है:सिंगलटन स्कोप बाइंडिंग
kernel.Bind<IFoo>().To<Foo>().InSingletonScope();
यह मेरी व्याख्या यह है कि kernal Foo
के ठीक एक उदाहरण बना सकते हैं और यह उचित रूप से पुन: उपयोग होगा। Foo
के निर्माता में ब्रेकपॉइंट डालने से, मैं स्पष्ट रूप से देख सकता हूं कि इसे प्रति अनुरोध एक बार बुलाया जा रहा है, और मैं क्यों समझा नहीं सकता।
मेरी केवल अनुमान है कि किसी भी तरह एक नया कर्नेल अनुरोध के अनुसार बनाया जा रहा है है, लेकिन उस के रूप में CreateKernel
विधि है जो वैश्विक निर्भरता समाधानकर्ता सेट केवल आवेदन जीवनकाल में एक बार चलाने के हो रही है, मामला हो प्रतीत नहीं होता है।
public class NinjectResolver : NinjectScope, IDependencyResolver
{
private readonly IKernel _kernel;
public NinjectResolver(IKernel kernel)
: base(kernel)
{
_kernel = kernel;
}
public IDependencyScope BeginScope()
{
return new NinjectScope(_kernel.BeginBlock());
}
}
मैं क्या कर रहा हूँ:
मैं क्योंकि ढांचे में परिवर्तन की MVC 4. साथ अच्छा खेलने Ninject बनाने के लिए this post से लिया कुछ कोड का उपयोग कर रहा है, मैं एक अतिरिक्त आवरण है कि मैं GlobalConfiguration.Configuration.DependencyResolver
को असाइन करना था गलत?
शायद से संबंधित नहीं कैप्टनक्रिग का मुद्दा, लेकिन शीर्षक के लिए प्रासंगिक है। मुझे एक ही समस्या थी और यह पता चला कि मैं गलती से इंटरफ़ेस की बजाय मेरी वस्तुओं में से एक में कार्यान्वयन इंजेक्शन दे रहा था। तो कन्स्ट्रक्टर में मैंने गलती से इफू के बजाय फू रखा था। उम्मीद है कि यह किसी को वहां मदद करता है ... –