2012-03-12 5 views
8

मेरे पास एक्सएमएल के रूप में क्रमबद्ध करने के लिए एक बड़ी कक्षा है, और बर्बाद जगह को कम करने के लिए चुनिंदा Xml को कुछ क्लास गुणों को अनदेखा करना चाहते हैं। उदाहरण के लिए, कक्षा में एक संपत्ति एक मूल्य के दस गुना या तो का केवल एक ही बाहर असाइन किया गया है, और अगर मैं क्रमबद्धता विशेषता कोड के रूप में इस प्रकार हैक्या कोई XmlIttributes को चुनिंदा XmlIgnore में उपयोग कर सकता है?

[XmlAttribute] 
public String WorkClass 
{ 
    get { return _workClass; } 
    set { _workClass = value; } 
} 

अगर वहाँ कोई मूल्य नहीं है (ज्यादातर समय) यह है बार बार

WorkClass="" 

वहाँ एक विकल्प या विशेषता है कि क्रमबद्धता के लिए प्रॉपर्टी को नकारने होता अगर अपने मूल्य खाली है के रूप में धारावाहिक रूप है, लेकिन यह अनदेखी नहीं करता है, तो इसे खाली नहीं है?

उत्तर

10

यदि आप .NET फ्रेमवर्क 4 का उपयोग कर रहे आप, मूल्यों आप

धारावाहिक नहीं करना चाहते से प्रत्येक के लिए तरीकों का पालन विधि true वापस आ जाएगी बना सकते हैं जब WorkClass कोई रिक्त स्ट्रिंग के अलावा कुछ होता है, तो आप string.IsNullOrWhitespace() का उपयोग करने के लिए चुना जा सकता है जो रिक्त स्थान ' ' के लिए भी जांच करेगा।

public bool ShouldSerializeWorkClass() { 
    return !string.IsNullOrEmtpy(WorkClass); 
} 

जब Xml Serializer चलता है, यह इस विधि के लिए दिखाई देगा, नामकरण परंपरा के आधार पर और फिर उस संपत्ति को क्रमानुसार या नहीं चुनें।

विधि का नाम हमेशा ShouldSerialize से शुरू होना चाहिए और फिर संपत्ति के नाम के साथ समाप्त होना चाहिए। फिर आपको मूल्यवान क्रमबद्ध करने के लिए या नहीं, इस शर्त के आधार पर आपको बस जो भी सशर्त इच्छा है, उसके आधार पर एक बूलियन वापस करने की आवश्यकता है।

+4

यह आश्चर्यजनक है! यह गैर-अंतर्ज्ञानी IMHO भी है। मैं serialization विशेषता पर कुछ प्रकार के संशोधक की उम्मीद करता, आप जानते हैं, कुछ [XmlAttribute (IgnoreOnNullOrEmpty = "true")]। – Cyberherbalist

संबंधित मुद्दे