सी # में ISerializable
इंटरफ़ेस को कार्यान्वित करते समय, हम एक निर्माता प्रदान करते हैं जो SerializationInfo
ऑब्जेक्ट लेता है, और उसके बाद ऑब्जेक्ट के फ़ील्ड को भरने के लिए विभिन्न GetInt32
, GetObject
आदि विधियों के साथ पूछताछ करता है जिसे हम deserialize करने की कोशिश कर रहे हैं।SerializationInfo में TryGetValue विधियों क्यों नहीं हैं?
इस इंटरफ़ेस को लागू करने, बल्कि सिर्फ [Serializable]
विशेषता का उपयोग की तुलना में, पश्च संगतता के लिए है एक प्रमुख कारण: अगर हम कुछ बिंदु पर वर्ग के लिए नई क्षेत्रों को शामिल किया है, हम SerializationException
एक धारावाहिक, पुराने संस्करण द्वारा फेंका पकड़ कर सकते हैं कक्षा के, और उन्हें उचित तरीके से संभाल लें।
मेरा प्रश्न निम्न है: हमें इन अपवादों का उपयोग क्यों करना है, अनिवार्य रूप से, प्रवाह को नियंत्रित करने के लिए? यदि मैं कुछ समय पहले सहेजी गई बड़ी संख्या में कक्षाओं को बेकार कर रहा हूं, तो संभावित रूप से प्रत्येक कक्षा में प्रत्येक गायब क्षेत्र अपवाद फेंक देगा, जिससे वास्तव में खराब प्रदर्शन होगा।
SerializationInfo
कक्षा TryGetValue
विधियों को प्रदान नहीं करती है जो नाम स्ट्रिंग मौजूद नहीं होने पर false
वापस कर देगा?
पूछो जो कोई भी उस वर्ग को लागू किया गया है –
अच्छी तरह से वे यहां हैं: पी –