एमवीसी के लिए बेस कंट्रोलर में, मेरे पास निम्न इंजेक्शन कोड था और यह पूरी तरह से काम कर रहा था।निनजेक्ट ने मेरी प्रॉपर्टी इंजेक्शन रोक दी
[Inject]
private INavigationRepository navigationRepository { get; set; }
[Inject]
private ISessionService sessionService { get; set; }
मुझे क्या करना त्रुटियों का निर्माण नहीं हो और यह के रूप में मौत का येलो पेज में उतार चलता "System.NullReferenceException:। एक वस्तु का एक उदाहरण के लिए सेट नहीं ऑब्जेक्ट संदर्भ" और नेविगेशन रिपॉजिटरी संदर्भ कोड की पहली पंक्ति को इंगित करता है।
मेरे पास काम करने के बाद से बहुत कम कोड परिवर्तन हो सकते हैं और यहां तक कि उन परिवर्तनों का समर्थन भी किया है लेकिन फिर भी त्रुटि प्राप्त हो रही है। मैं नीचे दिए गए कोड के साथ इसके आसपास हो सकता हूं लेकिन मैं इंजेक्शन खो देता हूं। इस से निपटने के तरीके पर कोई विचार?
private INavigationRepository navigationRepository;
private ISessionService sessionService;
public BaseController()
{
navigationRepository = new NavigationRepository();
sessionService = new SessionService(new VolunteerRepository());
}
+1 अच्छा उत्तर। और, वैसे, उत्कृष्ट काम के लिए धन्यवाद जो आप हाल ही में निनजेक्ट के साथ कर रहे हैं, रेमो। – StriplingWarrior
दूसरा @StriplingWarrior की टिप्पणी। डीआई के बारे में सबसे महत्वपूर्ण बिंदुओं में से एक के रूप में इसे +1 करें। –
प्रोप इंजेक्शन पर पकड़े हुए एक चीज मुझे इस बारे में नहीं मिली है कि यदि आपके पास बेस क्लास पर 4 चीजें हैं जिन्हें इंजेक्शन की आवश्यकता है और आप उन्हें व्युत्पन्न कक्षाओं पर मजबूर नहीं करना चाहते हैं, तो जवाब यह है कि आपके पास एक लापता अवधारणा है जो होना चाहिए एक वर्ग में encapsulated - प्रोप इंजेक्शन से दूर refactor करने के लिए उपयोग करें। IOW संपत्ति इंजेक्शन हमेशा एक बुरा विचार है - आप jsut से दूर refacotr दूर करने के लिए पर्याप्त कोशिश कर रहे हैं। इसका कहना बहुत आसान है "लेकिन मेरे मामले में यह अलग है - मेरे पास ग्रह पर विशेष मामला है जो पीआई के अस्तित्व को न्यायसंगत बनाता है" –