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?