XMLSerialize异常

siv*_*iva 6 c# xml-serialization winforms

我正在序列化一个类,我得到以下异常:

您必须在System.Configuration.SettingsPropertyCollection上实现默认访问器,因为它继承自ICollection.

当执行以下行时:

XmlSerializer xs = new XmlSerializer(typeof(CustomConfiguration));
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

public class CustomConfiguration : ConfigurationObjectBase 
{ 

         public CustomConfiguration () { //DO NOTHING. } 

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

} 
Run Code Online (Sandbox Code Playgroud)

ConfigurationObjectBase派生自System.configuration.ApplicationSettingsBase.

小智 4

“默认访问器”是根据索引返回集合对象的特殊属性。例如:

[Serializable()]
public class IntList : ICollection {

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

            return 0;
        }
        set { /* Do Nothing */ }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此无法在现有的第三方类中实现它。对 ApplicationSettings 使用 xml 序列化是非常糟糕的主意,请使用 Save()、Reload() 和 Reset() 方法,或者使用您自己的非从 ApplicationSettingsBase CustomConfiguration 类派生的方法。