コーディングがオブジェクトの正しい処理に従うようにしようとしているので、これらのルールをエラーとして適用しています。しかし、コードのこのセクションに問題があります
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;
}
}
コメントアウトするobjStream.Dispose()
と、オブジェクトを破棄していないため CA2000 が表示されますが、コメントを削除すると、複数回破棄していると表示されます。
他に何がオブジェクトを破棄していますか? または、複数のストリームを扱うときにこれを間違っているだけですか?