C # десериализовать XML в пользовательский класс - PullRequest
0 голосов
/ 10 июля 2019

У меня есть один XML-файл конфигурации, который можно десериализовать в разные экземпляры, каждый из которых занимает только часть этого XML.

class A
{
    public string A { get; set; }
}

class B
{
    public string B { get; set; }
}

public static T Xml2Cls<T>(string filename)
{
    XDocument doc = XDocument.Load(filename);
    var root = new XMLRootAttribte(doc.Root.Name.LocalName);
    var serializer = new XMLSerializer(typeof(T), root);
    using (var reader = doc.Root.CreateReader())
    {
        return (T)serializer .Deserialize(reader);
    }
}

// if I keep calling the following for say 1000 times
// all these instances don't seem to get garbage collected
var a = Xml2Cls<A>("a.xml");
var b = Xml2Cls<B>("a.xml");

<root>
    <a>...</a>
    <b>...</b>
</root>

Есть идеи, почему эти экземпляры объектов не собраны?Я пытался переместить return из блока using, но это не имеет значения.

...