2010-08-12 8 views
10

मैं आज इस मुद्दे पर भाग गया और यह निर्धारित करने में सक्षम था कि, कोड क्लीनअप करते समय, आर # सेरिएंज़ेबलएट्रिब्यूट के साथ सजाए गए वर्गों में बैकिंग फ़ील्ड को ऑटो गुणों में बैकिंग फ़ील्ड रखने से गुणों को परिवर्तित नहीं करेगा।Resharper स्वचालित रूप से Serializable कक्षाओं में ऑटो गुणों में परिवर्तित नहीं होता है - क्या मुझे चाहिए?

using System; 

namespace DataContracts 
{ 
    [Serializable] 
    public class Class1 
    { 
     private bool _wontChange; 

     public bool WontChange 
     { 
      get { return _wontChange; } 
      set { _wontChange = value; } 
     } 
    } 
} 

उपरोक्त कोड स्वचालित कोड क्लीनअप के दौरान नहीं बदला जाएगा। बेशक, मैं इसे मैन्युअल रूप से कर सकता हूं, और मुझे अभी भी व्यक्तिगत संपत्ति स्तर पर ऐसा करने के लिए R # से त्वरित-क्रिया मेनू विकल्प मिलता है। लेकिन मुझे आश्चर्य हुआ कि क्या कोई अंतर्निहित मुद्दा है कि मुझे [Serializable] कक्षाओं में ऑटो गुणों का उपयोग करने के बारे में पता नहीं है।

JetBrains forum thread में हमें an issue पर संदर्भित किया गया है जिसमें इस समस्या पर चर्चा की गई है, लेकिन यह निश्चित रूप से हल नहीं किया गया है।

+0

आप कहते हैं कि आप नौकरी करने के लिए "त्वरित कार्रवाई मेनू" का उपयोग कर सकते हैं। विकल्प सिर्फ वहां नहीं है। और जब मैं serializable विशेषता को हटा देता हूं, सबकुछ ठीक है। – Samuel

उत्तर

11

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

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

मुझे लगता है कि इस गड़बड़ी से बचने के लिए, आर # स्वचालित रूप से ऑटो-प्रॉपर्टी में नहीं बदलता है अगर वर्ग को धारावाहिक के रूप में चिह्नित किया जाता है।

+0

मुझे लगता है कि यह उन ऑब्जेक्ट्स के साथ कोई समस्या नहीं होगी जो समान डीएलएल से क्रमबद्ध और deserialized थे - बैकिंग फ़ील्ड डीएलएल के भीतर सांख्यिकीय रूप से परिभाषित किया जाएगा। क्या यह एक मान्य धारणा है? – arootbeer

+1

मैंने ऑटो गुणों और क्रमिकरण के साथ वर्णित इस मुद्दे में कभी भी भाग नहीं लिया है। मैंने इसमें आर # बग https://youtrack.jetbrains.com/issue/RSRP-63531 पढ़ा है और यह एसओ सबूत नहीं है जो इसे क्रिया में दिखाता है? पुनरुत्पादित परियोजना कहां है? क्या यह सीएलआर 1 और सीएलआर 2 दिनों में एक मुद्दा था जिसे बाद में सीएलआर 2 अपडेट या सीएलआर 4 में तय किया गया था? –

+0

बहुत बहुत धन्यवाद। यह इस तरह की कार्यक्षमता को उनकी वेबसाइट पर दस्तावेज करना अच्छा लगेगा। – Samuel