5

XML として保存されたシリアル化されたオブジェクトが多数ありますが、これらのオブジェクトに 2 つの変数を追加したいと考えています。

ここに私のオブジェクトがあります:

public class MyObject{
    public Int32 MyVariables = 0;
}

このオブジェクトはかなりシリアル化されているため、これらの「古い」ファイルをアプリケーションに読み込む機能を維持したいと考えています。

ただし、オブジェクトを改善するには、次のような変数をいくつか追加する必要があります。

public class MyObject{
    public Int32 MyVariables = 0;
    public Dictionary<string,MyEnum> MyDict = new Dictionary<string,MyEnum>();
}

これらの新しい変数を追加するための最良の方法を提案できる人はいますか? 実際に MyObject を変更して辞書を追加しましたが、適切に読み込まれなくなったと思います。

前もって感謝します!

編集:オブジェクトの読み取り時に失敗した場所を確認するためにどこでも例外をキャッチすることもできません。そのためにこれを行っています:

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
object obj = formatter.Deserialize(File.Open(Path, FileMode.Open));

編集2:これは実際には辞書の一部として列挙型を使用していることが原因である可能性があると[Serializable]思います.列挙型の上に追加しましたが、それでも機能しません-考えですか?

4

1 に答える 1

4

新しい変数を追加するだけです。

XML シリアライザーが新しい変数の適切な表現を見つけられない場合、デフォルト値でそれらを初期化します。

于 2012-04-19T03:45:30.853 に答える