2008-11-24 10 views
193

संभव डुप्लिकेट:
How do I mark a method as Obsolete/Deprecated? - C#किसी वर्ग को बहिष्कृत के रूप में चिह्नित करने के लिए कैसे करें?

आप कैसे एक वर्ग के रूप में पदावनत चिह्नित करते हैं? मैं अपनी परियोजना में किसी और वर्ग का उपयोग नहीं करना चाहता, लेकिन इसे 2 सप्ताह की अवधि से पहले हटाना नहीं चाहता हूं।

+13

क्या पहले प्रश्न को डुप्लिकेट के रूप में चिह्नित करने के लिए यह बुरा फॉर्म नहीं है? – noelicus

+2

हमें पहले प्रश्न को अप्रचलित/बहिष्कृत के रूप में चिह्नित करना चाहिए। तो सवाल अब है: प्रश्न के रूप में एक प्रश्न को कैसे चिह्नित करें? –

उत्तर

343

आपको विशेषता [Obsolete] का उपयोग करने की आवश्यकता है। , वे वैकल्पिक (अतिभारित विधि) कर रहे हैं

[Obsolete("Not used anymore",true)] 
public class MyDeprecatedClass 
{ 
    //... 
} 

आप उपयोग पैरामीटर नहीं हैं:

यह एक उदाहरण है। पहला पैरामीटर कारण के लिए है और अंतिम चेतावनी के बजाय संकलन समय में त्रुटि को चिह्नित करना है।

+0

'अप्रचलित (" अब और अधिक उपयोग नहीं किया गया ", सत्य)] यहां दो प्रमुख त्रुटियों से पीड़ित है: 1. यदि कोड का उपयोग नहीं किया जाता है तो इसे हटाया जाना चाहिए 2. स्पष्टीकरण इस बात की जानकारी प्रदान नहीं करता है कि क्या उपयोग/इसके बजाय करो – mayu

-5

यदि आप संस्करण नियंत्रण का उपयोग कर रहे हैं तो मैं केवल कक्षा को हटाने की अनुशंसा करता हूं। अप्रयुक्त कोड के आसपास कोई कारण नहीं है।

यदि आप निर्णय लेते हैं कि आप कक्षा चाहते हैं तो संस्करण नियंत्रण एक आसान पूर्ववत होगा।

+3

मैं अनुमान लगा रहा/मान रहा हूं कि वह कोड को अभी भी संकलित करने की इजाजत देने के लिए इसे अवरुद्ध करना चाहता है, जबकि वह कोडबेस में सभी संदर्भों को हटा देता है। – shsteimer

+0

मैं सहमत हूं, कक्षा को क्यों न हटाएं, या यदि आपके पास संस्करण नियंत्रण नहीं है, तो टिप्पणी करें? – configurator

+0

यह मेरे समाधान का उपयोग न करने का एक शानदार कारण होगा। – jjnguy

16

कक्षा को मिटाने और इसके बजाय बहिष्कृत करने का कारण कुछ "विनम्रता नीतियों" का पालन करना है जब आपका कोड एक अनुमानित एपीआई है और फिर तीसरे पक्ष द्वारा इसका उपभोग किया जाता है।

यदि आप मिटाने के बजाय बहिष्कृत करते हैं, तो आप उपभोक्ताओं को जीवन चक्र नीति (उदाहरण के लिए, संस्करण X.X तक कक्षाओं का रखरखाव और अस्तित्व) देते हैं ताकि उन्हें आपके नए एपीआई में उचित माइग्रेशन की योजना बनाने की अनुमति मिल सके।

35

Doak के जवाब के अनुसार, लेकिन विशेषता के दूसरे पैरामीटर गलत पर सेट किया जाना चाहिए यदि आप कोड को संकलित करना चाहते हैं:

[Obsolete("Not used anymore", false)] 
public class MyDeprecatedClass 
{ 
     //... 
} 

यह सिर्फ चेतावनी फेंक देते हैं।

+1

आप विशेषता को पूरी तरह से बंद कर सकते हैं (यह गलत पर डिफ़ॉल्ट है): '[अप्रचलित (" अब और उपयोग नहीं किया गया ")]'; व्यक्तिगत रूप से मुझे अंत में बुलियन के बिना यह और अधिक पठनीय लगता है। – Wolfgang

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

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