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
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;
}
}
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?