2010-08-02 16 views
13

मैंने कई रचनाकारों के साथ एक वर्ग को परिभाषित किया है ताकि ऑब्जेक्ट तत्काल होने के बाद अंतर्निहित इंटरफेस अपरिवर्तनीय हो। (दृश्य मेंक्या विजुअल स्टूडियो में इंटेलिसेन्स में सूचीबद्ध रचनाकारों के क्रम को बदलने का कोई तरीका है?

var obj = new MyClass(

Dim obj As New MyClass(

वर्तमान में जब मैं वस्तु का दृष्टांत के पास जाओ, कंस्ट्रक्टर्स सूचीबद्ध नहीं हैं: मैं कंस्ट्रक्टर्स में से एक चाहते हैं जब कोई उपयोगकर्ता प्रकार दृश्य स्टूडियो में निम्नलिखित के लिए "डिफ़ॉल्ट" निर्माता होने के लिए स्टूडियो IntelliSense) आदेश में मैंने उन्हें अपनी कक्षा में घोषित किया। क्या मेरे रचनाकारों को चिह्नित करने का कोई तरीका है ताकि विज़ुअल स्टूडियो इंटेलिसेन्स में तत्कालता के दौरान उनकी विधियां किसी विशेष क्रम में दिखाई दें?

उत्तर

13

विजुअल स्टूडियो के इंटेलिजेंस के भीतर ऑर्डरिंग को नियंत्रित करने का कोई तरीका नहीं है। यदि आपके पास एकाधिक कन्स्ट्रक्टर (या विधियां) हैं, तो इंटेलिसेंस के मामले में आपका एकमात्र वास्तविक नियंत्रण EditorBrowsable उचित EditorBrowsableState के साथ उपयोग करना है। यह आपको इंटेलिजेंस में एक निर्माता (या विधि) को छिपाने की अनुमति देता है, या केवल इसे "उन्नत" मोड में प्रदर्शित करता है, लेकिन आपको उन्हें पुन: व्यवस्थित करने की अनुमति नहीं देता है।

हालांकि, यदि आप .NET 4 को लक्षित कर रहे हैं, तो मैं एक कन्स्ट्रक्टर का उपयोग करने पर विचार करने और named and optional arguments का लाभ लेने की सलाह दूंगा।

+2

नामित और वैकल्पिक तर्कों का उपयोग करने पर बहुत अच्छा सुझाव। इसके कारण, मैं 4 से 2. –

2

मुझे पूरा यकीन है कि आप जो मांग रहे हैं वह असंभव है। सबसे अच्छी बात यह है कि अपने रचनाकारों को XML comments के साथ चिह्नित करना है जिसका उपयोग वीएस में इंटेलिजेंस को पॉप्युलेट करने के लिए किया जाएगा। इससे उपयोगकर्ता को विस्तृत इंटेलिजेंस मिलेगा कि कौन से निर्माता डिफ़ॉल्ट हैं आदि

संपादकीय: मुझे पूरा यकीन है कि VB.NET कक्षा घोषणा में उनके वर्तमान क्रम में रचनाकारों को आदेश देता है।

आपको याद रखना होगा कि इंटेलिसेंस भाषा की एक विशेषता नहीं है, बल्कि संपादक का है। आपके पास भाषा में निर्मित आईडीई के लिए विशिष्ट विशेषताएं नहीं होंगी क्योंकि अन्य संपादकों को कोड लिखने के लिए उपयोग किया जा सकता है। कोड लिखने के उद्देश्य के लिए कोड लिखना निशान से बाहर है।

4

यह एक दिलचस्प सवाल है, लेकिन मैंने ऐसी क्षमता के बारे में नहीं सुना है। एक विकल्प अन्य रचनाकारों को उन्नत या छुपाए जाने के रूप में चिह्नित करेगा।

ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Advanced) ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never )

+0

से रचनाकारों की संख्या को कम करने में सक्षम था, लेकिन यह किसी कारण से रचनाकारों पर काम नहीं कर रहा है। – Boinst

0

तुम हमेशा एक फैक्टरी मॉडल का उपयोग करें और निर्माता प्रत्येक विधि के लिए संरक्षित कर सकता है। हालांकि मैं रीड कॉपसे answer पर भरोसा करता हूं। हालांकि अगर .NET 4.0 कोई विकल्प नहीं है तो यह एक विकल्प हो सकता है।

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

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