का उपयोग करते समय किसी संपत्ति का प्रारंभिक मान सेट करना यदि मैं DataContractSerializer
का उपयोग कर कक्षा को क्रमबद्ध कर रहा हूं और बाद में deserializing कर रहा हूं, तो मैं उन गुणों के प्रारंभिक मानों को कैसे नियंत्रित कर सकता हूं जिन्हें क्रमबद्ध नहीं किया गया था?DataContractSerializer
नीचे Person
कक्षा पर विचार करें। इसका डेटा अनुबंध FirstName
और LastName
गुणों को क्रमबद्ध करने के लिए सेट है लेकिन IsNew
संपत्ति नहीं है। मैं IsNew
चाहता हूं कि यह सुनिश्चित करने के लिए कि कोई नया व्यक्ति एक नए उदाहरण के रूप में तत्काल हो रहा है या फ़ाइल से deserialized किया जा रहा है।
यह निर्माता के माध्यम से करने के लिए आसान है, लेकिन जैसा कि मैंने यह समझ DataContractSerializer
के रूप में वे मानकों की आवश्यकता हो सकती निर्माता फोन नहीं करता है।
[DataContract(Name="Person")]
public class Person
{
[DataMember(Name="FirstName")]
public string FirstName { get; set; }
[DataMember(Name = "LastName")]
public string LastName { get; set; }
public bool IsNew { get; set; }
public Person(string first, string last)
{
this.FirstName = first;
this.LastName = last;
this.IsNew = true;
}
}
पावेल का उल्लेख के रूप में यह [OnDeserializing] अन्य सभी मूल्य हर बार नहीं बल्कि सिर्फ एक बार की तुलना में ओवरराइट किया जाएगा होना चाहिए (जब यह याद आ रही थी)। –