अप्रचलित या पदावनत विधि को कैसे चिह्नित किया जाए?


1002

मैं C # का उपयोग करके अप्रचलित या पदावनत विधि को कैसे चिह्नित करूं ?


यहाँ एक YouTube वीडियो है जो अप्रचलित विशेषता के सभी 3 रूपों की व्याख्या करता है: youtube.com/watch?v=_AQ5wsPnfJ4
शिवप्रसाद कोईराला

3
भूलना नहीं वहाँ भी है [EditorBrowsable(EditorBrowsableState.Never)]( stackoverflow.com/a/9086345/661933 )। थोड़ा अलग उद्देश्य से कार्य करता है।
नवफाल

जवाबों:


1592

सबसे छोटा तरीका विधि के ObsoleteAttributeरूप में एक विशेषता को जोड़कर है । एक उपयुक्त स्पष्टीकरण शामिल करना सुनिश्चित करें:

[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{  }

यदि आप विधि को इस तरह कोड में कहीं से कॉल करते हैं, तो चेतावनी के बजाय विधि के उपयोग को एक त्रुटि के रूप में मानते हुए, असफल होने का कारण भी हो सकता है :

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]

97
यदि आप चाहते हैं कि कंपाइलर किसी त्रुटि को फेंक दे, यदि कोई विधि का उपयोग करता है तो ओवरलोडेड विधि का उपयोग करें अप्रचलित (स्ट्रिंग संदेश,
बूल

140
विवरण के बिना अप्रचलित अप्रचलित होना चाहिए ... notherdev.blogspot.com/2013/02/obirect-should-be-obirect.html
dotjoe

31
आप उदाहरणों में "मेथड 1 पदावनत है" भाग बेमानी है। इसे अप्रचलित के रूप में चिह्नित करके आप कह रहे हैं कि यह वास्तव में अप्रचलित है, इसलिए संदेश में इसे पुनर्स्थापित करने की कोई आवश्यकता नहीं है। खासकर जब से परिणामी चेतावनी / त्रुटि पढ़ेगी 'Method1' अप्रचलित है: 'Method1 पदावनत हो गया है, कृपया इसके बजाय Method2 का उपयोग करें।'
अप्राकृतिक

8
कोई बात नहीं। मैं सिर्फ कुछ उदाहरण पाठ को यह दिखाने के लिए रखता हूं कि आप अधिक विशिष्ट संदेश जोड़ सकते हैं यदि आप चाहें।
क्रिस बैलेन्स

14
@ akshay2000 नाम बदलने या विधि को हटाने से उपभोक्ता का पता नहीं चलेगा कि उसका नाम क्यों बदला गया या हटा दिया गया और इसके स्थान पर क्या उपयोग किया जाना चाहिए।
लेन्सफ्लारे

134

चेतावनी के साथ अप्रचलित के रूप में चिह्नित करने के लिए:

[Obsolete]
private static void SomeMethod()

इसका उपयोग करने पर आपको एक चेतावनी मिलती है:

अप्रचलित चेतावनी दिखाई गई है

और IntelliSense के साथ:

IntelliSense के साथ अप्रचलित चेतावनी

यदि आप एक संदेश चाहते हैं:

[Obsolete("My message")]
private static void SomeMethod()

यहाँ IntelliSense टूल टिप है:

IntelliSense अप्रचलित संदेश दिखाता है

अंत में अगर आप चाहते हैं कि उपयोग को त्रुटि के रूप में चिह्नित किया जाए:

[Obsolete("My message", true)]
private static void SomeMethod()

जब इसका उपयोग किया जाता है तो आपको यह मिलता है:

विधि उपयोग त्रुटि के रूप में प्रदर्शित किया जाता है

नोट: संदेश का उपयोग लोगों को यह बताने के लिए करें कि उन्हें इसके बजाय क्या उपयोग करना चाहिए, न कि यह अप्रचलित क्यों है।


66

कीवर्ड का उपयोग करके विधि में एक एनोटेशन जोड़ें Obsolete। संदेश तर्क वैकल्पिक है, लेकिन यह विचार करने के लिए एक अच्छा विचार है कि आइटम अब अप्रचलित और / या इसके बजाय क्या उपयोग करना है।
उदाहरण:

[System.Obsolete("use myMethodB instead")]
void myMethodA()

35

ObsoleteAttributeआप के साथ पदावनत विधि दिखा सकते हैं। अप्रचलित विशेषता में तीन निर्माता हैं:

  1. [Obsolete]: कोई पैरामीटर निर्माता नहीं है और इस विशेषता का उपयोग करके डिफ़ॉल्ट है।
  2. [Obsolete(string message)]:इस प्रारूप में आप पा सकते हैं messageकि यह विधि क्यों निकाली गई है।
  3. [Obsolete(string message, bool error)]:इस प्रारूप में संदेश बहुत स्पष्ट errorहै, लेकिन इसका मतलब है, संकलन समय में, संकलक त्रुटि दिखा रहा है और संकलन विफल होने या नहीं होने का कारण होना चाहिए।

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.