2011-08-25 8 views
6

प्रोटोबफ-नेट प्रोटोमेम्बर "IsRequired" विशेषता का उपयोग क्या है?प्रोटोबफ-नेट प्रोटोमेम्बर "IsRequired" विशेषता उपयोग

यदि मैं एक फ़ाइल में पहले से ही धारावाहिक वर्ग में एक नई संपत्ति (सदस्य) जोड़ता हूं तो इसका क्या असर होगा। यदि मैं "IsRequired = true" का उपयोग करता हूं, तो क्या यह केवल एक मान लोड किए बिना स्वीकार करेगा (क्योंकि यह वहां नहीं है) या क्या मुझे मान को गलत पर सेट करना चाहिए? और यदि मैं इसे गलत पर सेट करता हूं, तो क्या मूल्य ठीक से क्रमबद्ध किया जाएगा?

+0

मैं अभी कुछ दिनों से वापस आ गया हूं। मैं इसे बाद में देखूंगा –

उत्तर

6

Issue 262: ProtoMembers with IsRequired=true aren't really required के अनुसार:

वर्तमान में, मुख्य रूप से प्रभाव डालता है क्रमबद्धता IsRequired, यह कुछ डिफ़ॉल्ट नियमों की अनदेखी करने के लिए मजबूर कर दिया।

जब आवश्यक है गलत (डिफ़ॉल्ट), डिफ़ॉल्ट मान क्रमबद्ध नहीं हैं, उदा। 0 का एक पूर्णांक मान धारावाहिक नहीं किया जाएगा, 1 का मान होगा।

जब आवश्यक है सत्य, डिफ़ॉल्ट मान सहित सभी मानों को क्रमबद्ध किया जाता है।

वर्तमान में protobuf-net का उपयोग करके Deserialization IsRequired विशेषता के मूल्य से अप्रभावित प्रतीत होता है। हालांकि यदि आप deserialization के लिए Google Protocol Buffers के एक अलग कार्यान्वयन का उपयोग कर रहे हैं तो आप अलग-अलग व्यवहार देख सकते हैं।

यदि आप मौजूदा कक्षा में कोई नई संपत्ति जोड़ते हैं, और संपत्ति जोड़ने से पहले लिखी गई एक धारावाहिक फ़ाइल को deserialize, नई संपत्ति बस सेट नहीं किया जाएगा।

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