我正在使用一个类来为我正在处理的应用程序序列化各种配置选项。我正在向List类添加一个新属性,如果XML文件中不存在,我希望它填充此列表。我的第一个想法是检查列表是否包含零项,但这是不可接受的,因为有时我想在列表中有零项。从本质上讲,我希望一个已使用相同类的旧版本序列化的文件进行“升级”,并为新属性自动插入默认值。我怎样才能做到这一点?有关我正在尝试做的更直观的示例,请参阅以下内容:
当我反序列化包含以下内容的XML文件时
<Item1>wtfe</Item1>
<Item2>wtfe</Item2>
在我添加了list属性后,它将序列化为:
<Item1>wtfe</Item1>
<Item2>wtfe</Item2>
<Item3/>
我希望它序列化为:
<Item1>wtfe</Item1>
<Item2>wtfe</Item2>
<Item3>
<DefaultSubItem/ Field="wtfe">
<DefaultSubItem/ Field="wtfe">
</Item3>
但请允许我将其更改为:
<Item1>wtfe</Item1>
<Item2>wtfe</Item2>
<Item3></Item3>
答案 0 :(得分:1)
另一种选择可能是使用这些属性:
[OnSerializing()]
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.onserializingattribute.aspx
[OnDeserializing()]
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.ondeserializingattribute.aspx
答案 1 :(得分:0)
我认为您正在寻找SerializationBinder类: