2011-01-19 7 views
5

क्या सी # विधि उत्पन्न करते समय और डिफ़ॉल्ट मान प्रदान करते समय CodeDom वैकल्पिक तर्क बना सकता है?क्या सी # विधि उत्पन्न करते समय CodeDom वैकल्पिक तर्क बना सकता है?

उदाहरण के लिए:

public void ExampleMethod(int required 
          , string optionalstr = "default string" 
          , int optionalint = 10) 

समाधान मैं इस के लिए एक सरल समाधान का मिल गया है, तो आप सिर्फ में डिफ़ॉल्ट मान रख सकते हैं तर्क नाम के हिस्से के रूप:

CodeParameterDeclarationExpression(typeof(int), "optionalint = 5"); 

यह मेरे लिए काम करता है बी/सी मैं केवल सी # कोड का उत्पादन करने के लिए कोडडॉम का उपयोग कर रहा हूं। यदि आपको एकाधिक भाषाओं का समर्थन करने की आवश्यकता है तो यह काम नहीं करेगा।

+1

ध्यान दें कि सिर्फ इसलिए कि आप ऐसा कर सकते हैं इसका मतलब यह नहीं है कि यह एक अच्छा विचार है :) –

+0

मुझे आश्चर्य है कि यह कोई त्रुटि नहीं देता है। – SLaks

उत्तर

4

हां।

[Optional] विशेषता जोड़ें।
डिफ़ॉल्ट मान निर्दिष्ट करने के लिए, [[DefaultParameterValue(...)] विशेषता जोड़ें। (यदि डिफ़ॉल्ट मान 0 या null है, इस विशेषता छोड़ा जा सकता है।

मैं अपने ब्लॉग पर एक more detailed explanation लिखा था।

+0

क्या मैं एक डिफ़ॉल्ट मान प्रदान कर सकता हूं? (इस बारे में अधिक जानकारी के लिए बस प्रश्न को अपडेट किया गया है) मैं एक स्ट्रिंग वैल्यू (उदाहरण के लिए) को सिर्फ डिफ़ॉल्ट मानने के बजाए एक डिफ़ॉल्ट मान देना चाहता हूं। – NotDan

+0

@ नहीं: हाँ। '[डिफ़ॉल्ट पैरामीटर वैल्यू] विशेषता जोड़ें। – SLaks

+0

हाँ, वे काम, धन्यवाद। Resharper इसे पसंद नहीं करता है हालांकि (मैं चाहता हूं कि इसे आउटपुट करने के लिए एक तरीका था, int वैकल्पिक = 5) प्रारूप। – NotDan

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