【问题标题】:Confirm or deny: The XmlSerializer cannot serialize the following: arrays of ArrayList and arrays of List<T>确认或拒绝:XmlSerializer 无法序列化以下内容:ArrayList 数组和 List<T> 数组
【发布时间】:2012-07-07 12:35:07
【问题描述】:

XmlSerializer.Serialize method 的文档说明如下:

XmlSerializer 无法序列化以下内容:ArrayList 的数组和List&lt;T&gt; 的数组。

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

我曾怀疑这可能是一条简短消息,说明您如何无法序列化 List&lt;T&gt;,除非您有 all the types in object graph,但这对于只有 object 的 ArrayList 没有意义。

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();
    }
}

【问题讨论】:

  • 贴出所涉及类的相关部分。现在还不清楚你在说什么。

标签: c# .net serialization xmlserializer


【解决方案1】:

再次阅读文档 - 它说您无法序列化 List&lt;T&gt;ArrayList(即 List&lt;T&gt;[]ArrayList[])的 数组

果然,这些工作:

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

这些不:

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

后者抛出这个异常:

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

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 2011-05-12
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多