2011-10-12 13 views
6

Utilizzando .NET 4/C# ...Deserialize di digitare il cui namespace è cambiato

Ho bisogno di deserializzare i vecchi file di configurazione che contengono la rappresentazione serializzata di un tipo di nome, per esempio, ns1.X. La serializzazione è stata eseguita utilizzando BinaryFormatter.

Il problema è che, dopo un giro di refactoring, il tipo X è stato spostato in un diverso spazio dei nomi, ad esempio ns2.X.

Ho provato a generare un nuovo tipo ns1.X vuoto che deriva da ns2.X, e mentre questo aggira il 'Non riesci a trovare il tipo ns1.X' errore, le proprietà nella oggetto deserializzato sono tutti null . Inoltre, nessun ctor viene chiamato nel processo.

Qualche suggerimento?

+1

Non so se questo può risolvere il tuo problema dal momento che non l'ho mai effettivamente usato, ma mi ricordo di aver letto su TypeForwarding qualche tempo fa: puoi trovare le informazioni qui: http: // msdn .microsoft.com/it-it/library/ms404275.aspx – Anton

+0

Interessante. Lo guarderò. –

+0

Una ricerca di Google ha trovato questo che potrebbe aiutare: http://www.codeproject.com/KB/cs/DrawWithMouse.aspx#AdvancedBinarySerialization:DeserializinganObjectIntoaDifferentTypeThantheOneItwasSerializedInto9 – Dan

risposta

1

Avrai bisogno di usare un ISerializationSurregate per far si che questo accada. Non è troppo difficile e Jeff Richter lo spiega molto bene. Raccomando il suo libro CLR Via C# 3.