2010-11-27 16 views
6

मैं एक मौजूदा एमवीसी 2 एप्लिकेशन में निनजेस निर्भरता इंजेक्शन को कार्यान्वित कर रहा हूं जो आधार नियंत्रक का उपयोग करता है कि सभी नियंत्रक मास्टर पेज द्वारा आवश्यक नेविगेशन और अन्य जानकारी सेट करने के लिए उत्तराधिकारी हैं। जब मैं बेस नियंत्रक से प्राप्त करने के लिए नियंत्रक सेट करता हूं, तो मुझे निम्न त्रुटि मिलती है: "... बेसकंट्रोलर" में कोई ऐसा निर्माता नहीं होता है जो 0 तर्क लेता है। मैं इस त्रुटि को कैसे प्राप्त करूं? मैं निनजेक्ट के लिए नया हूं और ' टी आंकड़ा इस बाहर।एमवीसी बेस कंट्रोलर और निनजेक्ट

public class BaseController : Controller 
    { 
     private INavigationRepository navigationRepository; 
     private ISessionService sessionService; 


     public BaseController(INavigationRepository navigationRepository, IMembershipService membershipService, ISessionService sessionService) 
     { 
      this.navigationRepository = navigationRepository; 
      this.sessionService = sessionService; 
     } 
    } 


public class HomeController: BaseController 
    { ... } 

उत्तर

6

कि ctor जोड़ा जा रहा है एक तरह से

public class HomeController: BaseController 
{ 
    public HomeController(INavigationRepository navigationRepository, IMembershipService membershipService, ISessionService sessionService) 
    : base(navigationRepository, membershipService, sessionService) { } 

} 

या संपत्ति इंजेक्शन

public class BaseController : Controller 
{ 
    [Inject] 
    public INavigationRepository navigationRepository { get; set; } 
    [Inject] 
    public ISessionService sessionService { get; set; } 


} 
+0

संपत्ति इंजेक्शन के साथ चला गया है। समाधान के लिए धन्यवाद। – scottrakes

+2

संपत्ति इंज ईक्शन क्लीनर नहीं है। यह दूसरा रास्ता है। जब भी संभव हो आप निर्भरता को केवल पढ़ने के लिए चाहते हैं। –

+0

हाँ क्लीनर गलत शब्द था ... यह अधिक सुविधाजनक है कि आपको अपने सभी नियंत्रकों में सीटीआर घोषित करने की आवश्यकता नहीं है। – dotjoe

संबंधित मुद्दे