2010-05-28 18 views
11

मुझे आश्चर्य है कि अप्रचलित विशेषता केवल रनटाइम पर चेक किया जाता है?अप्रचलित विशेषता केवल संकलन समय पर जांच की गई है?

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

अब तक कोई समस्या नहीं है लेकिन सवाल यह है कि पुरानी असेंबली ए जारी है या नहीं नई असेंबली बी के साथ काम करते हैं या नहीं? धन्यवाद

उत्तर

13

यह आप क्या कर रहे हैं पर निर्भर करता है। [Obsolete] विशेषता मुख्य रूप से संकलन समय में उपयोग के लिए है, लेकिन बारे में पता होना अलग व्यवहार कर कि क्रम के कुछ भागों जब यह मौजूद है (नीचे देखें)। यह समस्या का कारण बन सकता है, यहां तक ​​कि मौजूदा कोड को भी पुनर्निर्मित नहीं किया गया है, इसलिए हमें यह निष्कर्ष निकालना होगा कि NO, [Obsolete] केवल संकलन समय पर चेक नहीं किया गया है।

उदाहरण के लिए, नीचे दिए गए कोड लिखेंगे Foo नहीं बल्कि Bar:

using System; 
using System.Xml.Serialization; 
public class Data 
{ 
    public int Foo { get; set; } 
    [Obsolete] public int Bar {get;set;} 

    static void Main() 
    { 
     var data = new Data { Foo = 1, Bar = 2 }; 
     new XmlSerializer(data.GetType()).Serialize(Console.Out, data); 
    } 
} 

(XmlSerializer एक क्रम भी है - संकलक का हिस्सा नहीं)

+0

आपकी विस्तृत प्रतिक्रिया मार्क के लिए धन्यवाद। – mkus

+0

मैं इसके साथ समस्याओं में भाग गया। मैंने एक वेब सेवा में [अप्रचलित] के साथ एक enum में कुछ प्रविष्टियों को चिह्नित किया था। सेवा का उपभोग करने वाले ग्राहक अब रनटाइम पर उन एनम प्रविष्टियों को प्राप्त नहीं करेंगे। लेकिन वेब संदर्भों में अभी भी उन्हें शामिल किया जाएगा। यह मेरे लिए क्रमबद्धता में एक बग की तरह लगता है - या सबसे खराब डिजाइन निर्णय। इस ध्वज रनटाइम महत्व को देने से मेरी राय में पूरी तरह से अपना उद्देश्य हार जाता है। – LOAS

6

एक विधानसभा एक और विधानसभा जो के रूप में अप्रचलित चिह्नित है से एक विधि का उपयोग करता है का निर्माण एक संकलन समय चेतावनी (जब तक आप 'त्रुटि के रूप में प्रदर्शन चेतावनी' सक्षम किया गया है) का कारण बनता है।

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

आपके प्रश्न का उत्तर करने के लिए, हाँ, एक पुराने विधानसभा एक एक नई विधानसभा बी के साथ काम करना जारी रखेंगे (विधानसभा संस्करण उपलब्ध कराने के एक ही रहता है)

+0

+1 ने मुझे यह करने के लिए हराया। –

+2

यह सभी मामलों में गारंटी नहीं है; मेरा उत्तर क्यों देखें ... –

+0

'[अप्रचलित (" नाइटपिकिंग ", सत्य)] आपको संकलित समय पर एक त्रुटि देनी चाहिए यदि आपको सीधे संदर्भित किया गया हो, भले ही आपने त्रुटियों को त्रुटियों के रूप में अक्षम किया हो। – mbx

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