c# - सी#निजी वर्ग के सदस्य serialize




class Person
{
    public string m_name;
    private int m_age; // << how do I serialize the darn little rat?
}

सरल सवाल अभी तक यह जवाब देने की कोशिश करते समय एक बड़ी गड़बड़ की तरह लगता है।
हर कोई सार्वजनिक गेटर / सेटर का उपयोग करने का सुझाव देता है लेकिन मेरा ऐप बहुत बड़ा है और प्रत्येक सदस्य के लिए गेटर / सेटर बनाना सिर्फ रखरखाव के मुद्दों का कारण बनता है।

क्या मुझे यहां एक कस्टम सीरियलाइजेशन बनाने के लिए मजबूर किया गया है या ऐसे सदस्यों के लिए जादू विशेषता है?
मैं निजी वर्ग के सदस्यों को क्रमबद्ध कैसे करूं?

# 1 संपादित करें :
ठीक है हर कोई, अनजानता के लिए खेद है, जब मैंने यह प्रश्न लिखा था, तो मैं थोड़ा परेशान था, समाधान खोजने की कोशिश करने के कई घंटे बाद।
वैसे भी, यहां अधिक तथ्य हैं:
1. मैं एक्सएमएल को इस वर्ग को क्रमबद्ध करने की कोशिश कर रहा हूं। वर्तमान में मैं System.Xml.Serialization.XmlSerializer का उपयोग कर रहा हूं।
2. मैं संस्करण संगतता रखने के लिए एक्सएमएल में क्रमबद्ध कर रहा हूं, जहां तक ​​मुझे लगता है कि बाइनरी मुझे यह पेशकश नहीं करता है।
3. मैं उम्मीद कर रहा था कि एक निश्चित विशेषता है जैसे :

class Person
{
    public string m_name;
    [SerializeThat(ElementName="Age")]
    private int m_age; // << how do I serialize the darn little rat?
}

या (तथ्य # 3 जारी रखें) एक विशेषता जो वर्ग पर जाती है जो इस तरह दिखेगी:

[Serializable(DoPrivate = true, DoProtected = true)]
class Person
{
    public string m_name;
    private int m_age; // << how do I serialize the darn little rat?
}

अब, मैं इसे प्राप्त करने के लिए क्या कर सकता हूं?



क्या धारावाहिक आप वर्तमान में उपयोग कर खाया? लगभग सभी को इसके साथ काम करना चाहिए। लेकिन सार्वजनिक क्षेत्र * एक बुरा विचार है। XmlSerializer और JavaScriptSerializer निजी सदस्यों को अनदेखा कर देगा। DataContractSerializer और protobuf-net निजी सदस्यों से निपट सकते हैं। बाइनरीफॉर्मेटर फ़ील्ड (सार्वजनिक या निजी) को संभालता है, लेकिन कई कारणों से आईएमओ का अच्छा विचार नहीं है।


पता नहीं है कि आप DataContract उपयोग कर सकते हैं या नहीं। लेकिन इसके साथ आप लिख सकते हैं:

[DataContract]
class Person
{
    [DataMember]
    public string m_name;

    [DataMember]
    private int m_age;
}

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





serialization