2010-02-25 4 views
5

मैं एक वर्ग serializing रहा हूँ और मैं निम्न अपवाद प्राप्त करें:XMLSerialize अपवाद

आप क्योंकि यह ICollection से विरासत System.Configuration.SettingsPropertyCollection पर एक डिफ़ॉल्ट एक्सेसर को लागू करना चाहिए।

जब निम्न पंक्ति निष्पादित होने

XmlSerializer xs = new XmlSerializer(typeof(CustomConfiguration)); 

किसी भी मदद की?

public class CustomConfiguration : ConfigurationObjectBase 
{ 

     public CustomConfiguration() { //DO NOTHING. } 

     [User] 
     public uint Version 
     { get { return ((uint)(this["Version"])); } 
      set { this["Version"] = value; } 
} 

} 

ConfigurationObjectBase ली गई है से System.configuration.ApplicationSettingsBase।

+1

क्या आप अपनी 'कस्टम कॉन्फ़िगरेशन' कक्षा (विशेष रूप से विरासत आदि) का कोई संस्करण दिखा सकते हैं? –

+0

पब्लिक क्लास कस्टम कॉन्फ़िगरेशन: कॉन्फ़िगरेशनऑब्जेक्टबेस { सार्वजनिक कस्टम कॉन्फ़िगरेशन() { // कुछ भी नहीं। } ///

/// संस्करण /// [उपयोगकर्ता] सार्वजनिक uint संस्करण { मिल { वापसी ((uint) (यह [ "संस्करण"])); } सेट { यह ["संस्करण"] = मान; } } } कॉन्फ़िगरेशनऑब्जेक्टबेस सिस्टम.configuration.EplicationSettingsBase – siva

+0

से लिया गया है क्या मैं पूछ सकता हूं कि आप इसे फिर से क्रमबद्ध करने का प्रयास क्यों कर रहे हैं? थोड़ा अजीब लगता है। –

उत्तर

4

"डिफ़ॉल्ट एक्सेसर" एक विशेष संपत्ति है जो संग्रह की वस्तु को पर आधारित करती है। उदाहरण के लिए:

[Serializable()] 
public class IntList : ICollection { 

    // Default Accessor Implementation 
    public int this[int index] { 
     get { 

      return 0; 
     } 
     set { /* Do Nothing */ } 
    } 
} 

इसलिए मौजूदा तृतीय-पक्ष वर्ग में लागू करने के लिए अनुपलब्ध है। ApplicationSettings के लिए xml serializing का उपयोग करना बहुत बुरा विचार है, सहेजें(), रीलोड() और रीसेट() विधियों का उपयोग करें, या एप्लिकेशनसेटिंगबेस कस्टम कॉन्फ़िगरेशन कक्षाओं से प्राप्त नहीं किया गया है।

0

आप, वह है, एक है कि कोई पैरामीटर नहीं ले करता है तो तरह, ....

class foo 
{ 
    public foo() {} 
} 

एक डिफ़ॉल्ट निर्माता है अगर वर्ग आप को क्रमानुसार करने की कोशिश कर रहे एक, XmlSerializer नहीं है है उस अपवाद फेंकता है। यदि आप बिल्ट-इन क्लास को क्रमबद्ध करने की कोशिश कर रहे हैं, तो आपको अपना खुद का अधिग्रहण करना होगा या रैपर क्लास बनाना होगा।

+0

नोट टाइप करें 'System.Configuration.SettingsPropertyCollection' ... इसे संपादित करना आसान नहीं है। –

+0

डिफ़ॉल्ट कन्स्ट्रक्टर जोड़ने से भी काम नहीं हुआ। – siva

+0

एक ही अपवाद फेंकता है – siva

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