0

XmlSerializer.Serialize 方法的文档说明如下:

XmlSerializer不能序列化以下内容:数组和ArrayList数组List<T>

但是,如果我尝试使用以下代码,它可以工作(我使用List<int>and ArrayList)。那么这是一个文档缺陷吗? .NET 4.5 中的一个新功能还没有成为文档的方式?

List<T>我曾怀疑这可能是一条简短消息,说明除非您拥有对象图中的所有类型,否则您无法序列化 a ,但这对于 ArrayList 来说没有意义,因为它只是object.

private static string Serialise<T>(T o)
{
    var serializer = new XmlSerializer(typeof(T));
    var memoryStream = new MemoryStream();
    serializer.Serialize(memoryStream, o);
    memoryStream.Position = 0;
    using (var reader = new StreamReader(memoryStream))
    {
        return reader.ReadToEnd();
    }
}
4

1 回答 1

4

再次阅读文档-它说您不能序列化or (即and )的数组。List<T>ArrayListList<T>[]ArrayList[]

果然,这些工作:

Serialise(new ArrayList());
Serialise(new List<int>());

这些不会:

Serialise(new ArrayList[]{});
Serialise(new List<int>[]{});

后者抛出此异常:

System.InvalidOperationException:无法生成临时类(result=1)

于 2012-07-07T12:51:25.180 回答