对象序列化如何
编辑:
由于Dictionary
不XmlSerializer
支持我原来的答复是不正确的,但我提供的参考其他序列化。更好的答案是实现您自己的KeyValuePair
类并将Dictionary
转换为此类,以便可以序列化。如何实施以及为什么这是必要的一个很好的解释可以找到here。
注:这是我的旧的答案和不正确的。
本示例使用内置的.Net XmlSerializer
类来序列化为一个字符串。串行器可以写入任何流,所以例如,如果你要序列化到文件,你会想要使用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
兄弟,sory但原始的XmlSerializer不支持Dictionary和array [,] – KowalskyJan 2011-05-17 19:03:13
@KowalskyJan:那么请在你的文章中提及:) – mellamokb 2011-05-17 19:04:01
对不起,感谢您的任何帮助 – KowalskyJan 2011-05-17 19:06:51
如果你特别需要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。
序列化成什么? – alexn 2011-05-17 18:59:52