Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XMLSerialize Exception

I am serializing a class and I get the following exception:

You must implement a default accessor on System.Configuration.SettingsPropertyCollection because it inherits from ICollection.

when the following line is executed:

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

Any help?

public class CustomConfiguration : ConfigurationObjectBase 
{ 

         public CustomConfiguration () { //DO NOTHING. } 

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

} 

ConfigurationObjectBase is derived from System.configuration.ApplicationSettingsBase.

like image 735
siva Avatar asked Feb 25 '10 05:02

siva


1 Answers

"default accessor" is the special property that returns an object of the collection based on its index. for example:

[Serializable()]
public class IntList : ICollection {

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

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

Therefore unavailable to implement that in existing third-party class. Using xml serializing for ApplicationSettings is very bad idea, use Save(), Reload() and Reset() methods, or use your own not derived from ApplicationSettingsBase CustomConfiguration classes.

like image 128
necrostaz Avatar answered Sep 28 '22 10:09

necrostaz