2011-10-12 26 views
6

を変更しましたデシリアライズが...その名前空間.NET 4/C#を使用して

を入力するために、私はns1.X、たとえば、名前付きの型の直列化表現が含まれている古い設定ファイルをデシリアライズする必要があります。シリアライズはBinaryFormatterを使用して行われています。

問題は、1回のリファクタリングの後に、タイプXが別の名前空間、たとえばns2.Xに移動されたことです。

私はns2.Xから派生した新しい空のns1.Xタイプを作成しようとした、これは回避しながら、「タイプns1.X見つけることができません」というエラーが、非直列化されたオブジェクトのプロパティはすべてnullをしています。また、プロセス中にctorsが呼び出されることもありません。

提案がありますか?

+1

実際に使ったことがないので、これがあなたの問題を解決できるかどうかはわかりませんが、TypeForwardingを読む前に覚えています。http:// msdn Microsoft.com/ja-jp/library/ms404275.aspx – Anton

+0

興味深い。確かめます。 –

+0

Google検索でこれが見つかりました: http://www.codeproject.com/KB/cs/DrawWithMouse.aspx#AdvancedBinarySerialization:DeserializinganObjectIntoaDifferentTypeThantheOneItwasSerializedInto9 – Dan

答えて

1

これを実現するには、ISerializationSurregateを使用する必要があります。あまりにも難しくないとジェフリヒターは本当にそれを説明します。私は彼の本CLR via c#3をお勧めします。

関連する問題