对象序列化如何

问题描述:

如何快速(不多做)序列化那个对象?对象序列化如何

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

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

+2

序列化成什么? – alexn 2011-05-17 18:59:52

编辑

由于DictionaryXmlSerializer支持我原来的答复是不正确的,但我提供的参考其他序列化。更好的答案是实现您自己的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 

+0

兄弟,sory但原始的XmlSerializer不支持Dictionary和array [,] – KowalskyJan 2011-05-17 19:03:13

+0

@KowalskyJan:那么请在你的文章中提及:) – mellamokb 2011-05-17 19:04:01

+0

对不起,感谢您的任何帮助 – 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。