2011-12-21 10 views
24

मेरे पास एक बहिष्कृत (अप्रचलित) फ़ंक्शन है जो एक enum देता है, और मेरे पास एक नया फ़ंक्शन है जो enums की सूची देता है।Enum deprecated C#

enum मूल्यों में से एक ही पदावनत समारोह में प्रयोग किया जाता है, एक enum सदस्य के रूप में अप्रचलित (क्योंकि यह सूची में नहीं हो सकता) स्थापित करने के लिए इसलिए यह संभव है?

+1

क्या आपने ['अप्रचलित एट्रिब्यूट'] (http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.aspx) का उपयोग करने का प्रयास किया है? –

+2

कुछ कोड देखने की आवश्यकता है ... – BoltClock

+8

@ बोल्टक्लॉक क्यों? मैं बस एक enum को अप्रचलित के रूप में सेट करना चाहता हूं ... – JohnJohnGa

उत्तर

37

ज़रूर, आप कर सकते हैं:

public enum EE 
{ 
    A, 

    [Obsolete] 
    B 
} 
1

मैं एक enum पर इस कोशिश की नहीं है, लेकिन कुछ इस तरह काम कर सकते हैं:

[Obsolete("Please use ... instead!")] 
public enum MyEnum 
{ 
    One, 
    Two, 
    Three 
} 
+2

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

+2

स्पष्ट रूप से पूरे 'enum' पर' अप्रचलित 'विशेषता डालने से यह एक ही मूल्य पर डालने जैसा नहीं है। ऐसा लगता है कि ओपी एक विशेष 'enum' मान को बाहर करना चाहता है। – Phil1970

-1

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

+5

यह गलत है, एक संपत्ति है [IsError] (http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.iserror.aspx) कि, यदि सत्य है, तो यह एक कंपाइलर त्रुटि बन जाएगा चेतावनी के बजाए। –

27

असल में, या तो कंपाइलर चेतावनियां या कंपाइलर त्रुटियां उत्पन्न करना संभव है।

public enum TestEnum 
{ 
    A, 
    [Obsolete("Not in use anymore")] 
    B, 
    [Obsolete("Not in use anymore", true)] 
    C, 
} 

public class Class1 
{ 
    public void TestMethod() 
    { 
     TestEnum t1 = TestEnum.A; //Works just fine. 
     TestEnum t2 = TestEnum.B; //Will still compile, but generates a warning. 
     TestEnum t3 = TestEnum.C; //Will no longer compile. 
    } 
} 

यह जहां भी आप [अप्रचलित] विशेषता का उपयोग करेंगे, यह काम करेगा।