मैं इसी तरह की समस्या में फंस गया था। मेरे पास एक कक्षा में एक डेटाटाइम संपत्ति (XmlAttribute) थी जो डब्ल्यूसीएफ सेवा में उजागर हुई थी। 1) XmlSerializer वर्ग नल प्रकार
[XmlAttribute]
public DateTime? lastUpdatedDate { get; set; }
Exception thrown : Cannot serialize member 'XXX' of type System.Nullable`1.
2 की XmlAttribute serialising नहीं किया गया था) कुछ पोस्ट [XmlAttribute] [XmlElement साथ बदलने के लिए सुझाव देते हैं (:
नीचे मैं क्या सामना करना पड़ा और समाधान है कि मेरे लिए काम किया है IsNullable = सच)]। लेकिन यह विशेषता को एक तत्व के रूप में क्रमबद्ध करेगा जो पूरी तरह से बेकार है। हालांकि यह XmlElements
3) के लिए ठीक काम करता है 3) कुछ लोग आपकी कक्षा में IXmlSerializable इंटरफेस को लागू करने का सुझाव देते हैं, लेकिन यह डब्ल्यूसीएफ उपभोक्ता अनुप्रयोग से डब्ल्यूसीएफ सेवा को कॉल करने की अनुमति नहीं देता है। तो यह भी इस मामले में काम नहीं करता है।
समाधान:
नल के रूप में संपत्ति को चिह्नित न करें, बल्कि एक ShouldSerializeXXX() विधि का उपयोग अपने बाधा डालने के लिए।
[XmlAttribute]
public DateTime lastUpdatedDate { get; set; }
public bool ShouldSerializelastUpdatedDate()
{
return this.lastUpdatedDate != DateTime.MinValue;
// This prevents serializing the field when it has value 1/1/0001 12:00:00 AM
}
स्रोत
2015-04-29 06:56:27
कुल अनुमान, लेकिन क्या आपने डेटटाइम की कोशिश की है? Nullable के बजाय? –
@Terry - वे समान हैं! –
@Terry, मैं डेटटाइम के रूप में नहीं कर सकता क्योंकि शून्य और उपयोगकर्ता प्रिंसिपल नहीं है। खाता एक्सप्लोरेशनडेट; एक शून्य –