2012-09-13 17 views
59
का उपयोग करता है शामिल नहीं हो सकता

एक अभिव्यक्ति पेड़ एक फोन या मंगलाचरण वैकल्पिक तर्कएक अभिव्यक्ति पेड़ एक फोन या मंगलाचरण वैकल्पिक तर्क

return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId)); 

का उपयोग करता है शामिल नहीं हो सकता कहाँ संपादित एक दूसरे, नल था तर्क।

यह क्यों है?

उत्तर

56

underlying expression tree API वैकल्पिक तर्कों का समर्थन नहीं करता है।

आईएल संकलित कोड के लिए सी # कंपाइलर संकलन समय (हार्ड-कोडेड) पर डिफ़ॉल्ट मान डालता है, क्योंकि सीएलआर वैकल्पिक तर्कों के साथ कॉलिंग विधियों का समर्थन नहीं करता है, जब तर्क स्पष्ट रूप से प्रदान नहीं किए जाते हैं।

+2

क्या यह किसी भी तरह अधिभार शामिल है? जब मैं ओवरलोड करता था तो मुझे यह मिल रहा था। शून्य ब्लाह (स्ट्रिंग ए) और शून्य ब्लैह (ऑब्जेक्ट ए) की तरह कुछ। जब मैंने ऑब्जेक्ट के साथ संस्करण में कॉल करने के लिए MOQ करने का प्रयास किया, तो उसने मुझे यह त्रुटि दी। – vbullinger

+4

अधिभार इस अर्थ में पूरी तरह से समर्थित हैं कि एक विशेष अधिभार पेड़ में हार्ड-कोड किया जाएगा। – usr

+0

सुंदर क्रिप्टिक त्रुटि संदेश, लेकिन इस जवाब ने रास्ता दिखाया, मेरे पास विधि पर डिफ़ॉल्ट मान के साथ वैकल्पिक पैरामीटर था जो नकली करने की कोशिश कर रहा था। – vpalmu

14

कई डिफ़ॉल्ट पैरामीटर के साथ एक विधि नकल करने के लिए Mock.setup का उपयोग करने का प्रयास करते समय वही संदेश था। मुझे सिर्फ लैम्ब्डा में अतिरिक्त पैरामीटर जोड़ना पड़ा।

void someMethod(string arg1 = "", string arg2 = "") 

mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>() 
संबंधित मुद्दे