वहाँ विशेषताओं है कि अक्रमांकन दौरान xml फ़ाइल में नहीं हैं के मूलभूत मूल्यों का चयन करने के लिए एक रास्ता है?
mAge
विशेषता xml फ़ाइल में मौजूद नहीं है, तो मैं 18 वर्ष की एक डिफ़ॉल्ट मान क्या यह संभव है का उपयोग करना चाहते हैं?DataContract, डिफ़ॉल्ट DataMember मूल्य
[DataContract]
public class Person
{
public Person()
{
}
[DataMember(Name = "Name")]
public string mName { get; set; }
[DataMember(Name = "Age")]
public int mAge { get; set; }
[DataMember(Name = "Single")]
public bool mIsSingle { get; set; }
};
उत्तर देने के लिए संपादित करें।
[DataContract]
public class Person
{
public Person()
{
}
[DataMember(Name = "Name")]
public string mName { get; set; }
[DataMember(Name = "Age")]
public int? mAge { get; set; }
[DataMember(Name = "Single")]
public bool? mIsSingle { get; set; }
[System.Runtime.Serialization.OnDeserialized]
void OnDeserialized(System.Runtime.Serialization.StreamingContext c)
{
mAge = (mAge == null ? 18 : mAge); // 18 is the default value
}
}
यदि मैं किसी ऑब्जेक्ट के मान को ओवरराइड करना चाहता हूं, तो मैं आपके उत्तर का उपयोग कर सकता हूं, क्योंकि जब संदर्भ शून्य पर सेट होता है तो मुझे पता है कि विशेषता xml फ़ाइल में मौजूद नहीं है। लेकिन मुझे कैसे पता चलेगा कि xml फ़ाइल में कोई बूलियन या int विशेषता मौजूद है या नहीं? एक bolean के लिए मूल्य गलत पर सेट है या किसी पूर्णांक को 0 पर सेट है, तो मैं unseted attribut beetwen distingue नहीं कर सकते हैं और ग # डिफ़ॉल्ट मान पर seted attribut। – BuzBuza
चूंकि deserilization किसी दिए गए ढांचे में अनुपलब्ध डेटा के लिए डिफ़ॉल्ट मान सेट करने का प्रयास करेगा, इसलिए आपका एकमात्र विकल्प मान्य मानों की जांच करना है जैसे कि मैंने अपना उत्तर अपडेट किया है और यह जांच रहा है कि उम्र mAge == 0 है तो अपना मान निर्धारित करें। –
आप int और null पाने के लिए शून्य प्रकारों का उपयोग कर सकते हैं, कृपया मेरे अपडेट किए गए उत्तर –