दिलचस्प पोस्ट
MATLAB parfor के लिए धीमी है – क्या गलत है? गतिविधि से एंड्रॉइड में टुकड़े को डेटा भेजें Hadoop java.io.IOException: Mkdirs बनाने में विफल / कुछ / पथ गुमनाम प्रकार के परिणाम लौटें? सी # में दो या अधिक बाइट सरणियों को संयोजित करने का सर्वोत्तम तरीका क्या यह AltBeacon के Android Beacon पुस्तकालय के साथ iBeacons का पता लगाने के लिए सही लेआउट है? MySQL त्रुटि कोड: 1175 MySQL कार्यक्षेत्र में अद्यतन के दौरान 'Pthread_create' के लिए अपरिभाषित संदर्भ – लिंकर कमांड विकल्प ऑर्डर (ऑब्जेक्ट फ़ाइलों के पहले / बाद में पुस्तकालय)? मोंगोडीबी या अन्य दस्तावेज़ आधारित डेटाबेस सिस्टम का उपयोग कब किया जाए? इनलाइन चर कैसे काम करते हैं? स्लैला एक ट्यूपल का विशेष रूप से इलाज करते समय क्यों और कैसे एक आर्ग फ़ंक्शन बुलाते हैं? Android में AsyncTask के लिए सामान्य वर्ग? Html.TextBoxFor के लिए शर्त पर आधारित विशेषता को अक्षम करें कोई भी अच्छा पायथन आधारित वेब क्रॉलर का पता है जिसे मैं उपयोग कर सकता था? के बीच क्या अंतर है ।*? और। * नियमित अभिव्यक्तियाँ

क्यों एक्सएमएल सीरियलिज़ेबल वर्ग को पैरासेलेबल कन्स्ट्रक्टर की आवश्यकता है

मैं एक्सएमएल धारावाहिक करने के लिए कोड लिख रहा हूँ नीचे फ़ंक्शन के साथ

public static string SerializeToXml(object obj) { XmlSerializer serializer = new XmlSerializer(obj.GetType()); using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, obj); return writer.ToString(); } } 

यदि तर्क पैरासेलेबल कन्स्ट्रक्टर के बिना वर्ग का एक उदाहरण है, तो यह एक अपवाद फेंक देगा।

अप्रतिबंधित अपवाद: सिस्टम। अज्ञातऑपरेशन अपवाद: CSharpConsole.Foo को क्रमबद्ध नहीं किया जा सकता क्योंकि इसमें पैरामीटर रहित निर्माता नहीं है। System.Xml.Serialization.TypeDesc.CheckSupported () पर System.Xml.Serialization.TypeScope.GetTypeDesc (प्रकार प्रकार, MemberInfo sourc ई, System.Xml.Serialization.ModelScope.GetTypeModel पर प्रकार प्रकार, बुलियन throwOnError) System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping पर System.Xml.Serialization.XmlSerializer..ctor (प्रकार प्रकार, स्ट्रिंग डिफ़ॉल्ट नाम स्थान) पर System.Xml.Serialization पर (टाइप प्रकार, XmlRootAttribute रूट, स्ट्रिंग डिफ़ॉल्ट नामस्थान) पर बूलियन प्रत्यक्ष संदर्भ)। एक्सएमएलसीरियलआइजर..प्रकार (प्रकार प्रकार)

XML सीरियलाइजेशन को सफल बनाने के लिए पैरामीटर रहित कंसट्रक्टर क्यों होना चाहिए?

संपादित करें: cfeduke के जवाब के लिए धन्यवाद। पैरामीटरलेस निर्माता निजी या आंतरिक हो सकता है

वेब के समाधान से एकत्रित समाधान "क्यों एक्सएमएल सीरियलिज़ेबल वर्ग को पैरासेलेबल कन्स्ट्रक्टर की आवश्यकता है"

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

यदि आप चाहते हैं कि आप अपने कन्स्ट्रक्टर को private या internal बना सकते हैं, तो इसके पैरामीटर वाले

यह XmlSerializer की एक सीमा है ध्यान दें कि BinaryFormatter और DataContractSerializer को इसकी आवश्यकता नहीं है – वे आकाश का एक अनिर्धारित ऑब्जेक्ट बना सकते हैं और इसे deserialization के दौरान प्रारंभ कर सकते हैं।

चूंकि आप एक्सएमएल का उपयोग कर रहे हैं, तो आप डेटा DataContractSerializer का उपयोग करने और [DataContract] क्लास के साथ अपने वर्ग को चिह्नित करने पर विचार कर सकते हैं], लेकिन ध्यान दें कि यह स्कीमा बदलता है (उदाहरण के लिए, [XmlAttribute] बराबर नहीं है – सब कुछ तत्व बन जाता है)।

अद्यतन: यदि आप वास्तव में जानना चाहते हैं, तो BinaryFormatter एट का उपयोग करें FormatterServices.GetUninitializedObject() बनाने के बिना ऑब्जेक्ट बनाने के लिए। शायद खतरनाक; मैं इसे बहुत बार उपयोग करने की अनुशंसा नहीं करता हूं; -पी एमएसडीएन पर टिप्पणी भी देखें:

चूंकि ऑब्जेक्ट के नए इंस्टॉलेशन को शून्य पर आरंभ किया जाता है और कोई कन्स्ट्रक्टर नहीं चला है, इसलिए ऑब्जेक्ट उस ऑब्जेक्ट का प्रतिनिधित्व नहीं कर सकता है जिसे उस ऑब्जेक्ट द्वारा मान्य माना जाता है। वर्तमान पद्धति का उपयोग केवल deserialization के लिए किया जाना चाहिए, जब उपयोगकर्ता तुरंत सभी क्षेत्रों को आबाद करना चाहता है। यह एक अपरिहार्य स्ट्रिंग नहीं बना है, क्योंकि एक अपरिवर्तनीय प्रकार का एक खाली उदाहरण बनाने से कोई उद्देश्य नहीं है।

मेरे पास अपना सीरिजलाइजेशन इंजन है, लेकिन मैं इसे FormatterServices उपयोग करने का इरादा नहीं करता; मुझे यह जानना काफी पसंद है कि एक निर्माता ( किसी भी निर्माता) ने वास्तव में निष्पादित किया है।

सबसे पहले, यह जो दस्तावेज़ में लिखा है। मुझे लगता है कि यह आपकी कक्षा के खेतों में से एक है, मुख्य एक नहीं है – और कैसे आप deserialiser इसे वापस निर्माण करने के लिए चाहते हैं w / o पैरामीटरless निर्माण?

मुझे लगता है कि निर्माता निजी बनाने के लिए एक वैकल्पिक उपाय है।