2013-06-14 24 views
5

मैं एक वर्ग इस तरह परिभाषित किया गया है:सी # एक्सएमएल मेरी विशेषता क्यों नहीं दिखाई देती है?

[XmlRoot(ElementName="request")] 
public class Request 
{ 
    #region Attributes 
    [XmlAttribute(AttributeName = "version")] 
    public string Version 
    { 
     get 
     { 
      return "1.0"; 
     } 
    } 

    [XmlAttribute(AttributeName = "action")] 
    public EAction Action 
    { 
     get; 
     set; 
    } 
    #endregion 

लेकिन जब मैंने उसे क्रमानुसार, "संस्करण" अप विशेषता में (जबकि "कार्रवाई" करता है) नहीं दिखाता है।

क्या गलत हो रहा है?

उत्तर

4

XmlSerializerVersion अनदेखी करने के लिए है क्योंकि यह एक set नहीं है जा रहा है, इसलिए वहाँ कोई रास्ता नहीं है यह यह कभी deserialize करने के लिए प्रयास कर सकते हैं है। शायद बजाय:

[XmlAttribute(AttributeName = "version")] 
public string Version {get;set;} 

public Request() { Version = "1.0"; } 

जो एक ही प्रभाव समग्र होगा (हालांकि एक अतिरिक्त string क्षेत्र की आवश्यकता होगी प्रति-उदाहरण - "1.0" सभी मान हालांकि एक ही वास्तविक string उदाहरण, हो जाएगा होना शामिल द्वारा), पर आपको deserializing डेटा के संस्करण को ठीक से कैप्चर करने की अनुमति देगा।

आप अक्रमांकन के बारे में परवाह है यदि नहीं, तो हो सकता है सिर्फ एक नहीं सेशन set जोड़ें:

[XmlAttribute(AttributeName = "version")] 
public string Version 
{ 
    get { return "1.0"; } 
    set { } 
} 
2

आप एक खाली सेटर सेट करना होगा। यह XmlAttribute की एक सीमा है।

[XmlRoot(ElementName="request")] 
public class Request 
{ 
    #region Attributes 
    [XmlAttribute(AttributeName = "version")] 
    public string Version 
    { 
     get 
     { 
      return "1.0"; 
     } 
     set{} 
    } 

    [XmlAttribute(AttributeName = "action")] 
    public EAction Action 
    { 
     get; 
     set; 
    } 
    #endregion 
संबंधित मुद्दे