2010-03-19 12 views
6

हम बाहरी ग्राहकों को कई असेंबली प्रदान करते हैं, लेकिन सभी सार्वजनिक एपीआई आधिकारिक तौर पर समर्थित नहीं हैं। उदाहरण के लिए, इष्टतम डिज़ाइन विकल्पों से कम होने के कारण कभी-कभी हमारे कोड को हमारे शेष कोड के लिए एक असेंबली से सार्वजनिक रूप से उजागर किया जाना चाहिए, लेकिन हम नहीं चाहते कि ग्राहक उस प्रकार का उपयोग करें। समर्थन की कमी को संप्रेषित करने का एक हिस्सा एक्सएमएल टिप्पणियों के रूप में कोई इंटेलिजेंस प्रदान नहीं करता है।सी # में एक्सएमएल कोड टिप्पणियों को चुनिंदा दबाएं?

क्या एक्सएमएल टिप्पणियों को चुनिंदा रूप से दबाने का कोई तरीका है? मैं चेतावनी 15 9 1 को अनदेखा करने के अलावा कुछ और ढूंढ रहा हूं क्योंकि यह दीर्घकालिक रखरखाव मुद्दा है।

उदाहरण: मेरे पास सार्वजनिक कक्षा ए और बी के साथ एक असेंबली है। आधिकारिक रूप से समर्थित है और इसमें XML दस्तावेज़ होना चाहिए। बी बाहरी उपयोग के लिए नहीं है और दस्तावेज नहीं किया जाना चाहिए। मैं एक्सएमएल दस्तावेज चालू कर सकता हूं और फिर चेतावनी 15 9 1 दबा सकता हूं। लेकिन जब मैं बाद में आधिकारिक रूप से समर्थित कक्षा सी जोड़ता हूं, तो मैं चाहता हूं कि संकलक मुझे बताए कि मैं खराब हो गया हूं और XML दस्तावेज़ जोड़ने में विफल रहा हूं। यह तब नहीं होगा जब मैंने परियोजना स्तर पर 15 9 1 दबा दिया था। मुझे लगता है कि मैं पूरे वर्गों में #pragma कर सकता था, लेकिन ऐसा लगता है कि ऐसा करने के लिए एक बेहतर तरीका होना चाहिए।

उत्तर

3

इंटेलिजेंस प्रदान करने के बारे में कैसे?

///<summary>A documentation</summary> 
public class A { } 

///<summary>B documentation. This class is not supported...</summary> 
[EditorBrowsable(EditorBrowsableState.Advanced)] 
public class B { } 

///<summary>C documentation</summary> 
public class C { } 

इस तरह, आप अभी भी असमर्थित वर्गों (आंतरिक उपयोगकर्ताओं भी महत्वपूर्ण हैं!) दस्तावेज़ और IntelliSense पर उन्हें नहीं देख अपने बाहरी उपयोगकर्ता हैं, कर सकते हैं। आंतरिक रूप से, आप दृश्य स्टूडियो को इन उन्नत संरचनाओं को "देखने" के लिए सक्षम कर सकते हैं। EditorBrowsableAttribute के लिए पेज हमें बताता है कि कैसे:

विजुअल C# में, आप जब उन्नत गुण IntelliSense और उपकरण के अंतर्गत छिपाएं उन्नत सदस्य सेटिंग के साथ गुण विंडो में प्रदर्शित नियंत्रित कर सकते हैं | विकल्प | पाठ संपादक | सी#। संबंधित संपादक ब्रोसेबलस्टेट उन्नत है।

5

ऐसी विधियां बनाएं internal, और उन्हें प्रदर्शित करने वाले असेंबली में [assembly: InternalsVisibleTo("AssemblyName")] विशेषता जोड़ें।

+0

अलास मैं बड़ी मात्रा में कोड से निपट रहा हूं इसलिए यह व्यावहारिक नहीं है। –

+3

@ माइक पोस्ट आपके सार्वजनिक एपीआई से अलग अपने सार्वजनिक एपीआई को अलग रखना आपकी प्राथमिक चिंता पहले दिन से होनी चाहिए, अगर ऐसा नहीं है तो आपके पास बहुत से रिफैक्टरिंग हैं। इसके लिए कोई त्वरित समाधान नहीं है और जॉन जो सुझाव देता है वह वास्तव में एक साफ है, यह नहीं पता था कि आप अन्य * मित्र * असेंबली में आंतरिक तरीकों का पर्दाफाश कर सकते हैं। –

2

#pragma का उपयोग enable or disable specific warnings पर निर्देश का उपयोग करने का प्रयास करें।

///<summary>some documentation</summary> 
public class A{ 
    //... 
} 

#pragma warning disable 1591 
public class B{ 
    //... 
} 
3
समर्थन की कमी एक्सएमएल टिप्पणियों के रूप में किसी भी IntelliSense प्रदान नहीं कर रहा है संवाद का

एक हिस्सा।

आप के बजाय एक सरल < सारांश > नहीं बाहरी उपयोग के लिए के साथ इन तरीकों टिप्पणी की जा सकी। </सारांश > टिप्पणी?

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