0

XmlSerializer.Serialize メソッドのドキュメントには、次のように記載されています。

は次のXmlSerializerものをシリアル化できません: の配列ArrayListおよび の配列List<T>

ただし、次のコードを試してみると動作します (私はList<int>andを使用していますArrayList)。これはドキュメントの欠陥であり、.NET 4.5 の新機能であり、ドキュメント化されていないのでしょうか?

オブジェクト graph にすべての型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

ドキュメントをもう一度読んでください-または(つまり、 )の配列をシリアル化できないと書かれています。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 に答える