मेरे पास एक एमवीसी 3 एप्लीकेशन है जिसे मैं एमवीसी 4 पर पोर्ट करना चाहता हूं। मैं निर्भरता इंजेक्शन के लिए Ninject का उपयोग कर रहा हूँ। Nuget का उपयोग करना, मैं अपने प्रोजेक्ट के लिए "Ninject" जोड़ा गया है और नीचे के रूप मेंनिंजा और एएसपीनेट एमवीसी 4
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
//Add ninject bindings here
}
}
यह MVC3 के लिए ठीक काम करता है पता चला है, लेकिन चीजों MVC4 में बदल गया है एक नियंत्रक कारखाना बनाया। मैं कुछ खुदाई किया था और इस लिंक बताते हैं कि
http://haacked.com/archive/2012/03/11/itrsquos-the-little-things-about-asp-net-mvc-4.aspx
MVC4
के लिए काम हालांकि, मैं मुसीबत संकलित करने के लिए ऊपर दिए गए लिंक में कोड हो रही हो रहा है Ninject पाने के लिए मिल गया। विशेष रूप से, कोड है कि मैं web.common फ़ाइल की विधि प्रारंभ() में जगह करना चाहिए मुझे अनसुलझे नाम स्थान त्रुटियोंGlobalConfiguration.Configuration.ServiceResolver
.SetResolver(DependencyResolver.Current.ToServiceResolver());
दोनों "ServiceResolver" और ".SetResolver" अनसुलझे हैं देता है। इन्हें सक्षम करने के लिए मुझे किन संदर्भों को जोड़ने की आवश्यकता है? इसके अलावा, यदि संभव हो तो आप मुझे एक ट्यूटोरियल की ओर इशारा कर सकते हैं कि मुझे दिखा रहा है कि कैसे nuget पैकेज ninject.mvc3 को स्थापित किए बिना एमवीसी 4 में काम कर रहा है? मैं पूछता हूं क्योंकि मैं अपने आवेदन में किसी भी पैकेज को स्थापित नहीं करना चाहूंगा जो एमवीसी 3 के लिए लिखा गया था, विशेष रूप से लाइन को तोड़ने से बचने के लिए अगर इन नुजेट पैकेज अपडेट किए गए हैं।
संपादित करें: मैं जोड़ लिया है चाहिए कि मैं Visual Studio 2012 का उपयोग कर रहा है और नेट 4.5
मैं वेबएपीआई आवश्यकता नहीं है। NinjectWebCommon.cs में मुझे अपनी बाइंडिंग कहां जोड़नी चाहिए? "शुरुआत" विधि में? साथ ही, क्या आप ninject.mvc3 पैकेज को मेरे एप्लिकेशन को तोड़ने के अपडेट के लिए कोई संभावित क्षमता देखते हैं? धन्यवाद –
@curiouspanda - अपडेट हमेशा चीजों को तोड़ सकते हैं, और निनजेक्ट कुछ पुनरावृत्तियों से गुजर चुका है जिसने इसके साथ काम करने के "पसंदीदा" तरीके को बदल दिया है, लेकिन सामान्य कोड में संगत रहना चाहिए। यदि आप वेबएपीआई का उपयोग नहीं करते हैं तो फिल का लेख लागू नहीं होता है। आप NinjectWebCommon.cs की RegisterServices विधि में अपनी मैपिंग पंजीकृत करते हैं –