对象序列化如何
本文关键字:序列化 对象 | 更新日期: 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。