2013-08-29 15 views
8

मेरे पास एक एमवीसी 4 एप्लीकेशन है जो निर्भरता संकल्प के लिए एकता का उपयोग कर रहा है। हमारे पास एक चीज है जो यूनिटी कंटेनर के लिए लॉगर सजावट है - किसी भी निर्भरता रिज़ॉल्यूशन में विफल होने पर लॉगिंग के एकमात्र उद्देश्य के लिए।उन प्रकारों पर एकता पंजीकरण त्रुटियां जिन्हें मैं हल नहीं कर रहा हूं

मुझे लगता है कि ऐसे कई प्रकार हैं जो हल करने में विफल रहे हैं कि मेरा ऐप स्पष्ट रूप से हल नहीं हो रहा है। इन प्रकार के होते हैं:

IControllerFactory 
IControllerActivator 
IViewPageActivator 
ModelMetadataProvider 
ITempDataProvider 
IActionInvoker 
IAsyncActionInvoker 

अपवाद फेंक दिया इस तरह सभी कर रहे हैं:

प्रकार ITempDataProvider एक सुलभ निर्माता नहीं है।

... अपने स्वयं के प्रकार के साथ।

ये अपवाद केवल एप्लिकेशन स्टार्टअप पर होते हैं, और अभी के लिए हम उन्हें लॉगिंग कर रहे हैं और जारी रखते हैं। इस प्रकार त्रुटियों के बाद भी एप्लिकेशन ठीक ठीक चलता है।

मुझे बिना किसी अच्छे कारण के त्रुटियों को निगलने से नफरत है, और समझने के बिना कि इन्हें पहले स्थान पर हल करने का प्रयास क्या है, मेरे पास कोई अच्छा कारण नहीं है।

सवाल:

1) किसी को भी पता है जो/क्या इन समाधान करने का प्रयास कर रहा है? यह मेरे कोडबेस में कहीं भी नहीं है। 2) यदि ढांचे में कहीं नीचे ये हल करने का प्रयास कर रहे हैं, तो क्या यह उम्मीद है कि मेरा ऐप इनके लिए एकता में समाधान प्रदान करेगा? 3) या यह सिर्फ अपेक्षित व्यवहार है, और मुझे इन अपवादों को निगलना चाहिए?

मैं समझता हूं कि यह बहुत कुछ नहीं है, लेकिन मुझे आशा है कि किसी और ने इन प्रकार की त्रुटियों को देखा है और मुझे सही दिशा में इंगित करने में सक्षम होंगे।

उत्तर

7

आपने: तो यह संभव है कि आप अपने वर्ग जो एक निर्माता है कि एक MVC वर्ग जो अपने आप ModelMetaDataProvider के रूप में इस तरह के निर्माता पैरामीटर लेता है, आदि

को निर्दिष्ट निर्माता का उदाहरण को हल करने रहे हैं एमवीसी में निर्भरता रीसोलवर के रूप में एकता को जोड़ दिया, सही? आप जिन सभी प्रकारों को देख रहे हैं वे आंतरिक रूप से एमवीसी ढांचे द्वारा उपयोग किए जाते हैं, और यह (एमवीसी) उनको हल करने की कोशिश कर रहा है।

अगर कुछ हल नहीं होता है और मानक कार्यान्वयन पर वापस आ जाता है तो हुड के नीचे एमवीसी कोड त्रुटि को पकड़ता है। ऐसा इस तरह से किया जाता है ताकि यदि आप उन्हें चाहते हैं तो उन चीजों के कस्टम कार्यान्वयन में प्लग करने का एक समान तरीका है।

आपको इन अपवादों के साथ कुछ भी नहीं करना चाहिए - बस उन्हें कॉलर पर वापस जाने दें, और एमवीसी सही काम करेगा।

+0

मैंने इसे उत्तर के रूप में स्वीकार कर लिया है, क्योंकि आपकी स्पष्टीकरण यह है कि यह अपेक्षा की जाती है कि व्यवहार वही था जो मैं ढूंढ रहा था। धन्यवाद मैं इसकी सराहना करता हूँ। – Silas

+0

मुझे लगता है कि यह उत्तर सटीक नहीं है। असल में आपको इस अपवाद को पकड़ने और शून्य – Illidan

+0

वापस करने की आवश्यकता है, मैंने इस जवाब को वोट दिया; हालांकि, मैं एक उद्यम वातावरण में काम कर रहा हूं। क्या कोई दस्तावेज है जिसे आप उत्तर देने के लिए मुझे इंगित कर सकते हैं? – Thomas

2

यदि आप एकता के माध्यम से कक्षा को हल करते हैं जिसमें पैरामीटर रहित कन्स्ट्रक्टर नहीं है, तो यूनिटी फिर से रचनाकारों में से किसी एक के लिए पैरामीटर प्रकारों को हल करने का प्रयास करेगी जबतक कि आप इसे स्पष्ट रूप से नहीं बताते ... यदि यह विफल हो जाता है त्रुटियों को प्राप्त करें जैसे कि आप उन प्रकारों के लिए देख रहे हैं जिन्हें आपने सीधे हल नहीं किया हो।

<register type="IMyThing" mapTo="MyThing"> 
    <constructor> 
    <param name="x" type="MyType1" />   
    <param name="y" type="MyType2" /> 
    </constructor> 
</register> 
+0

यह एक बहुत ही रोचक विचार है - एक जिसे मैं जांच करने जा रहा हूं। मुझे विश्वास नहीं है कि यह मामला है - हालांकि इस कोड में हमारे पास जितनी अधिकता कॉन्फ़िगरेशन है, यह निश्चित रूप से संभावना के दायरे में अच्छी तरह से है। मैं तुम्हारे साथ वापस आऊंगा, हालांकि मेरे कोड के माध्यम से मेरे लिए कंघी करने में समय लग सकता है। – Silas

+1

एक अलग नोट पर, आपने कहा: "एकता रचनाकारों में से किसी एक के लिए पैरामीटर प्रकारों को हल करने का प्रयास करेगी जबतक कि आप इसे स्पष्ट रूप से नहीं बताते ..." - एकता कैसे कहती है कि ऐसा न करें? – Silas

+1

यूनिटी कॉन्फ़िगरेशन में इंजेक्ट करने के लिए उपयोग करने के लिए निर्माता और मान निर्दिष्ट करें। मेरा जवाब अपडेट किया गया। – Haney

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

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