Kod Anlysis Rule CA2000 / CA2202

Staram się zapewnić, aby moje kodowanie podążało za prawidłowym usuwaniem obiektów, więc wymuszam te reguły jako błędy. Ale mam problem z tą sekcją kodu

<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>

Jeśli komentujęobjStream.Dispose() Otrzymuję CA2000, ponieważ nie usuwam obiektu, ale jeśli usuwam komentarz, to mówi, że go pozbywam więcej niż raz.

Co jeszcze pozbywa się obiektu? czy po prostu robię to źle, gdy mam do czynienia z wieloma strumieniami?

questionAnswers(3)

yourAnswerToTheQuestion