Regra de Análises de Código CA2000 / CA2202

Estou tentando garantir que meu código siga o descarte correto de objetos, portanto, estou impondo essas regras como erros. Mas estou tendo problemas com esta seção de código

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

Se eu comentarobjStream.Dispose() Eu recebo o CA2000 porque não estou descartando o objeto, mas se eu remover o comentário, ele diz que estou descartando mais de uma vez.

O que mais está descartando o objeto? ou estou apenas fazendo isso errado ao lidar com vários fluxos?

questionAnswers(3)

yourAnswerToTheQuestion