开发者

Default entries on a first time creation for a serialized class

I have a class I am using for serializing various configuration options for an application I am working on. I'm adding a new property to the class that is a List, and I'd like it to fill this list if it does not exist already in a XML file. My first thought was to check if the list contained zero items, however this is not acceptable because there are times I want to have zero items in the list. In essence I want a file that has been serialized with an older version of the same class to be "upgraded" and have defaults automatically i开发者_StackOverflow社区nserted for new properties. How can I do this? For a more visual example of what I'm trying to do, see below:

When I deserialize an XML file that contains:

<Item1>wtfe</Item1>
<Item2>wtfe</Item2>

and after I've added a list property it will serialze as:

<Item1>wtfe</Item1>
<Item2>wtfe</Item2>
<Item3/>

I want it to serialize as:

<Item1>wtfe</Item1>
<Item2>wtfe</Item2>
<Item3>
   <DefaultSubItem/ Field="wtfe">
   <DefaultSubItem/ Field="wtfe">
</Item3>

But allow me to change it to:

<Item1>wtfe</Item1>
<Item2>wtfe</Item2>
<Item3></Item3>


Another option may be to use these attributes:

[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


I think your looking for the SerializationBinder class:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.serializationbinder%28VS.71%29.aspx

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜