XMLSerializeexception

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

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

执行以下行时:

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

“default accessor”是一个特殊属性,它根据索引返回集合的对象。 例如:

 [Serializable()] public class IntList : ICollection { // Default Accessor Implementation public int this[int index] { get { return 0; } set { /* Do Nothing */ } } } 

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

你必须有一个默认的构造函数,即一个不带任何参数的构造函数,就像这样….

 class foo { public foo() {} } 

如果您尝试序列化的类没有,则XMLSerializer会抛出该exception。 如果您尝试序列化内置类,则必须派生自己的类或创建包装类。