I have to work an an old application that used binaryFormatter to serialize application data into filestream (say in a file named "data.oldformat") without any optimizazion the main class has been marked with attribute
<serializable()>public MainClass
.......
end class
and the serialization code
dim b as new binaryformatter
b.serialize(mystream,mymainclass)
In an attempt to optimize the serialization/deserialization process I simply made the class implement the ISerializable interface and wrote some optimized serialization routines
<serializable()>public MainClass
implements ISerializable
.......
end class
The optimization works really well but I MUST find a way to reatrive the data inside the old files for backward compatibility.
How can I do that??
Pierluigi
stmax has an excellent answer, however I would implement it like this, which uses
SerializationEntry.GetEnumerator()
instead oftry/catch
. This way is cleaner and significantly faster.I would prefer a LINQ version using .FirstOrDefault(), but SerializationInfo does not implement IEnumerable - in face, weirdly enough, it doesn't even implement the old IEnumerable interface.