我得到一些类型IList<object[]>
,将它序列化为xml的最佳方法是什么。
然后将其读回IList<object[]>
。
我只是没有看到任何简单的方法。
感谢您的帮助。
答案 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);
如果你不关心人类的可读性,那么二进制序列化器就应该做得很好。