对象序列化如何

本文关键字:序列化 对象 | 更新日期: 2023-09-27 17:56:37

如何快速(不多要做)序列化该对象?

Dictionary<int, List<int[,]>>

原始 XmlSerializer 不支持字典和数组[,]

对象序列化如何

编辑

由于Dictionary不支持XmlSerializer我原来的答案是不正确的,但我提供了其他序列化的参考。 更好的答案是实现您自己的 KeyValuePair 类并将Dictionary转换为此类,以便可以对其进行序列化。 可以在此处找到有关如何实现以及为什么有必要这样做的良好解释。


注意:这是我的旧答案,不正确。

此示例使用内置的 .Net XmlSerializer类序列化为字符串。 序列化程序可以写入任何流,因此,例如,如果要序列化为 file,则需要使用 FileWriter 而不是 StringWriter

// serialize into a string
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
// create a serializer for my specific type
XmlSerializer ser = new XmlSerializer(typeof(Dictionary<int, List<int[,]>>));
// perform serialization
ser.Serialize(sw, myObj);
// retrieve the final serialized result as a string I can work with
string serialized = sb.ToString();
// do something with serialized object

如果您特别需要 XML 序列化,自定义类可能会对您有所帮助。 由于您实际上并没有在做KeyValuePair请尝试以下操作:

[XMLSerializable]
public class CustomDictionary
{
    public int Key {get; set;}
    public List<Coordinate> Value {get; set;}
}
[XMLSerializable]
public class Coordinate
{
   public int X;
   public int Y;
}

这假设标准点(我相信是双 X、双 Y)不起作用,并且您在 int 数组的每一列中只持有一个值。 当然,您可以修改该容器类以满足您的特定需求。

一旦你正确地标记了你的代码(不 - 我不认为这是),你就可以调用股票XmlSerializer来写入XML。