Code-Analyse-Regel CA2000 / CA2202

Ich versuche sicherzustellen, dass meine Codierung der korrekten Entsorgung von Objekten folgt, damit ich diese Regeln als Fehler erzwinge. Aber ich habe Probleme mit diesem Codeabschnitt

<code>using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;

class MyClass
{  
    public String ToXml()
    {
        var objSerializer = 
            new DataContractSerializer(GetType());
        var objStream = new MemoryStream();
        StreamReader objReader;

        String strResult;
        try
        {
            // Serialize the object
            objSerializer.WriteObject(objStream, this);

            // Move to start of stream to read out contents
            objStream.Seek(0, SeekOrigin.Begin);

            objReader = new StreamReader(objStream);

            try
            {
                // Read Contents into a string
                strResult = objReader.ReadToEnd();
            }
            finally
            {
                objReader.Dispose();
            }
        }
        finally
        {
            if (objStream != null)
            {
                // objStream.Dispose();
            }
        }

        return strResult;
    }
}
</code>

Wenn ich auskommentiereobjStream.Dispose() Ich erhalte CA2000, da ich das Objekt nicht entsorge, aber wenn ich den Kommentar entferne, heißt es, dass ich mehr als einmal entsorge.

Was entsorgt das Objekt sonst noch? Oder mache ich das einfach falsch, wenn ich mit mehreren Streams zu tun habe?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage