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 类派生的方法。