2010-01-29 14 views
7

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

मुझे पता है कि मैं IXmlSerializable को कार्यान्वित कर सकता हूं, और मुझे यह भी पता है कि मैं कक्षाओं को पूरी तरह से डेटा स्टोरेज कक्षाओं में अलग कर सकता हूं, हालांकि, मैं इस तरह के सिस्टम को कैसे डिजाइन करना चाहिए, इस बारे में कोई सवाल नहीं पूछ रहा हूं, मैं हूं बस पूछ अगर वहाँ एक तरह से अगर वे कुछ भी है कि एक्सएमएल serializer नहीं है द्वारा कहा जाता है संकलन समय त्रुटियों/चेतावनी उत्पन्न करने के लिए है ...

+0

भी देखें http://stackoverflow.com/questions/968249/c-create-custom-warning-in-visual-studio-if-certain-method-is-used-in-source-co –

उत्तर

14

आप विधि के लिए

[Obsolete] 

जोड़ सकते हैं। IsErrorObsoleteAttribute की संपत्ति नियंत्रित करती है कि कोई त्रुटि या चेतावनी उत्पन्न होती है, और आप एक स्पष्टीकरण संदेश भी प्रदान कर सकते हैं।

+0

बढ़िया, धन्यवाद –

+0

[अप्रचलित], ओपी के इरादे से अलग उद्देश्य प्रदान करता है। मुझे नहीं लगता कि इस विशेषता का उपयोग करने के लिए यह तरीका है। –

+0

@ पॉप: निश्चित रूप से, उद्देश्य शायद थोड़ा अलग है, लेकिन नतीजा संभवतया वास्तव में पूछा गया था। –

5

आप ObsoleteAttribute के साथ सदस्यों को प्रश्न में सजाने के लिए तैयार कर सकते हैं। इसका इरादा थोड़ा अलग है, लेकिन यह उपयोगकर्ता कोड से कॉल होने पर संकलक चेतावनियां (या त्रुटियों) उत्पन्न करेगा।

0

आप [EditorBrowsable] विशेषता का उपयोग करके और इंटेलिजेंट से [Browsable] का उपयोग करके उपयोगकर्ता इंटेलिजेंस से विधियों को छुपा सकते हैं।

मैं [अप्रचलित एट्रिब्यूट] का उपयोग करने की अनुशंसा नहीं करता, क्योंकि यह वास्तव में किस विधि स्थिति के लिए एक अलग अर्थ बताता है। इसके बजाय एक टिप्पणी का उपयोग करें जो इंगित करता है कि विधि को उपयोगकर्ता कोड से उपयोग नहीं किया जाना चाहिए।

इसके अलावा वहाँ बहुत कुछ के उपयोगकर्ताओं है कि त्रुटियों रूप खतरा चेतावनी है, जो असंभव कर देगा उन्हें, वैध कोड को संकलित करने के लिए इस मामले में के साथ अपने कोड संकलन की हैं कि ध्यान में रखना।


+0

अप्रचलित एट्रिब्यूट थोड़ा अलग अर्थ बताता है, लेकिन वांछित व्यवहार है। मैं तर्क दूंगा कि संपादक ब्रोसेबल का अर्थ वास्तव में "आपको उपयोगकर्ता कोड से इसे कॉल नहीं करना चाहिए" का अर्थ नहीं है - और यह चेतावनी या त्रुटियां उत्पन्न नहीं करता है, जो इस मामले में वांछित व्यवहार है। –

+1

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

+0

@ मैट व्हिटफील्ड +1 –

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

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