我该如何处理XmlSerializer创建的资源?

时间:2010-09-09 03:47:43

标签: c# .net

假设我有一个班级:

class Class1
{
    public List<Class2> Classes;
}

我用XmlSerializer和Class2反序列化创建了一些我应该Dispose的东西。我应该自己处理所有内容还是自动完成?

2 个答案:

答案 0 :(得分:2)

经验法则:如果您使用的是实现IDisposable的类,则应确保调用Dispose()方法(可以使用using块)。如果该类没有实现IDisposable而不是.NET将为您处理它。

对于自己的类,如果您的类具有实现IDisposable或不受管理的成员变量,则应实现IDisposable。

答案 1 :(得分:1)

如果Class2有一些东西它应该处理,那么这也意味着Class1有一些东西要处理,Class2s。最安全的做法是让Class1也实现IDisposable并使其dispose方法整理Class2s。

class Class1 : IDisposable
{
    public List<Class2> Classes;

    public void Dispose()
    {
        foreach(Class2 c in Classes
        {
            c.Dispose();
        }
    }
}