Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deserialize to type whose namespace has changed

Using .NET 4/C#...

I need to deserialize old config files that contain the serialized representation of a type named, say, ns1.X . The serialization has been done using BinaryFormatter.

The problem is, after a round of refactoring, the type X has been moved to a different namespace, say ns2.X .

I have tried creating a new empty ns1.X type that derives from ns2.X, and while this circumvents the 'Can't find type ns1.X' error, the properties in the deserialized object are all null. Also, no ctors get called in the process.

Any suggestions?

like image 391
Cristian Diaconescu Avatar asked Oct 12 '11 13:10

Cristian Diaconescu


1 Answers

You're going to need to use an ISerializationSurregate to make this happen. It's not too difficult and Jeff Richter explains it really well. I recommend his book CLR Via c# 3.

like image 94
Kell Avatar answered Oct 21 '22 19:10

Kell