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?