Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改序列化对象?_C#_Serialization - Fatal编程技术网

C# 如何更改序列化对象?

C# 如何更改序列化对象?,c#,serialization,C#,Serialization,我有很多序列化对象保存为XML,但我想为这些对象添加两个变量 这是我的目标: public class MyObject{ public Int32 MyVariables = 0; } 这个对象已经序列化了很多次,我想保留将这些“旧”文件读入我的应用程序的能力 但我需要添加更多变量以使对象更好,例如: public class MyObject{ public Int32 MyVariables = 0; public Dictionary<string,MyE

我有很多序列化对象保存为XML,但我想为这些对象添加两个变量

这是我的目标:

public class MyObject{
    public Int32 MyVariables = 0;
}
这个对象已经序列化了很多次,我想保留将这些“旧”文件读入我的应用程序的能力

但我需要添加更多变量以使对象更好,例如:

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

编辑2:我相信这实际上可能是因为我使用了一个枚举作为字典的一部分,我在枚举上面添加了
[Serializable]
,但它仍然不起作用-想法?

只需添加新的变量即可


如果XML序列化程序没有为新变量找到合适的表示形式,它将使用默认值初始化它们。

我认为这会起作用(实际上,如果我只是将类型设置为int而不是dictionary,那么dictionary在默认情况下是不可序列化的吗?)。然而,有一些变通办法。我将尝试挖掘一个链接。这里有一种使用字典和XML序列化程序的方法。。。Eric我现在对使用这个类有点困惑。。。我基本上只是创建了DictionaryProxy类型的变量,但我想我不应该这样做?正如我稍后调用.ToDictionary()并不断添加/访问它,它似乎不像正常的指示词那样工作。如果DictionaryProxy令人困惑,请查看此替代方法。这更简单。。。这只是字典的替代品
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
object obj = formatter.Deserialize(File.Open(Path, FileMode.Open));