2012-12-18 36 views
8

जब मैं टाइमटाइप मान को एप्लिकेशनडेट सेटिंग्स में संग्रहीत करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है क्योंकि टाइमस्पेन को क्रमबद्ध नहीं किया जा सकता है। यह SO सवाल यह दिखाता है कि इसे कैसे संभालना है: How to serialize a TimeSpan to XMLसिस्टम क्यों है। टाइमस्पेन एक्सएमएल धारावाहिक नहीं है?

यह क्यों है कि टाइमस्पैन आसानी से क्रमबद्ध नहीं होगा?

और, क्या डेटा प्रकारों की एक सूची है जिसे क्रमबद्ध नहीं किया जा सकता है?

+1

यह _is_ '[Serializable]'। यह एक बुरा शीर्षक बनाता है। –

+1

बहस नहीं करना है, लेकिन टाइमस्पेन क्यों क्रमबद्ध नहीं होगा? –

+1

यह क्रमबद्ध होगा। बस एक साबुनफॉर्मर या बाइनरीफॉर्मेटर का उपयोग करें। –

उत्तर

7

कारण यह क्रमबद्ध नहीं होगा क्योंकि XmlCustomFormatter इसे क्रमबद्ध करने के लिए कार्यक्षमता को लागू नहीं करता है।

DateTime

Date

Time

आप देख सकते हैं कि यह कैसे किया जाता है:

XmlCustomFormatter वर्ग से, यहाँ एक (FromDefaultValue विधि से) समर्थित serializable डेटा की सूची है यदि आप स्रोत संदर्भ में XmlSerializationWriter कक्षा देखते हैं तो सब कुछ क्रमबद्ध करने के लिए:

primites आदि वस्तु और xml क्रमांकन पर

/// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.WriteTypedPrimitive"]/*' /> 
    protected void WriteTypedPrimitive(string name, string ns, object o, bool xsiType) { 

विवरण के बारे में अधिक जानकारी के लिए WriteTypedPrimitive विधि देखें:

/// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromByteArrayBase64"]/*' /> 
    protected static byte[] FromByteArrayBase64(byte[] value) { 
     // Unlike other "From" functions that one is just a place holder for automatic code generation. 
     // The reason is performance and memory consumption for (potentially) big 64base-encoded chunks 
     // And it is assumed that the caller generates the code that will distinguish between byte[] and string return types 
     // 
     return value; 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromByteArrayHex"]/*' /> 
    protected static string FromByteArrayHex(byte[] value) { 
     return XmlCustomFormatter.FromByteArrayHex(value); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromDateTime"]/*' /> 
    protected static string FromDateTime(DateTime value) { 
     return XmlCustomFormatter.FromDateTime(value); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromDate"]/*' /> 
    protected static string FromDate(DateTime value) { 
     return XmlCustomFormatter.FromDate(value); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromTime"]/*' /> 
    protected static string FromTime(DateTime value) { 
     return XmlCustomFormatter.FromTime(value); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromChar"]/*' /> 
    protected static string FromChar(char value) { 
     return XmlCustomFormatter.FromChar(value); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromEnum"]/*' /> 
    protected static string FromEnum(long value, string[] values, long[] ids) { 
     return XmlCustomFormatter.FromEnum(value, values, ids, null); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromEnum1"]/*' /> 
    protected static string FromEnum(long value, string[] values, long[] ids, string typeName) { 
     return XmlCustomFormatter.FromEnum(value, values, ids, typeName); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromXmlName"]/*' /> 
    protected static string FromXmlName(string name) { 
     return XmlCustomFormatter.FromXmlName(name); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromXmlNCName"]/*' /> 
    protected static string FromXmlNCName(string ncName) { 
     return XmlCustomFormatter.FromXmlNCName(ncName); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromXmlNmToken"]/*' /> 
    protected static string FromXmlNmToken(string nmToken) { 
     return XmlCustomFormatter.FromXmlNmToken(nmToken); 
    } 

    /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.FromXmlNmTokens"]/*' /> 
    protected static string FromXmlNmTokens(string nmTokens) { 
     return XmlCustomFormatter.FromXmlNmTokens(nmTokens); 
    } 
+0

अगर मुझे गलत है तो मुझे सही करें लेकिन तिथि या समय नामक कोई कक्षा नहीं है? – Peter

+0

@ पेटोज आप सही हैं। सभी तीन 'डेटाटाइम' का उपयोग कर रहे हैं। – mydogisbox