首页 > 解决方案 > C# 将 XML 反序列化为自定义类

问题描述

我有一个单一的配置 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街区,但这并没有什么不同。

标签: c#xmlxml-deserialization

解决方案


推荐阅读