带有通用列表的IList <object []> XmlSerializer的序列化</object []>

时间:2011-09-18 15:05:53

标签: c# .net xml xml-serialization

我得到一些类型IList<object[]>,将它序列化为xml的最佳方法是什么。 然后将其读回IList<object[]>

我只是没有看到任何简单的方法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

XmlSerializer在接口上窒息。因此,您可以在序列化之前将其转换为数组或具体List<T>。另外,你绝对应该specify known types,因为object[]根本不起作用。序列化程序必须事先知道您将要处理的所有类型。这样它就会将类型信息发送到生成的XML中:

var data = list.ToArray();
var knownTypes = new[] { typeof(Foo), typeof(Bar) };
var serializer = new XmlSerializer(data.GetType(), knownTypes);
serializer.Serialize(someStream, data);

或者,如果你不想打扰所有这些,只需为你的对象获得一些人类可读的持久性,你可以使用Json:

var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(list);

如果你不关心人类的可读性,那么二进制序列化器就应该做得很好。