Ну, на самом деле вы уже утилизируете его, так как метод textWriter.Close делает это.
public virtual void Close()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
Таким образом, вы можете изменить свой код на.Это
public static void SerializeObject<T>(this T toSerialize, String filename)
{
TextWriter textWriter;
try
{
XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
textWriter = new StreamWriter(filename);
xmlSerializer.Serialize(textWriter, toSerialize);
}
finally
{
textWriter.Close();
}
Что очень похоже на то, что делает using () в других ответах.
Результатом отсутствия этого является то, что если в Serialize произойдет ошибка, пройдет некоторое время, прежде чем Framework откажется от блокировки файла (когда она обрабатывает очередь fReachable).
Я знаюFxCop сообщает вам, когда следует внедрить IDisposable, но я не думаю, что есть какой-либо простой способ выяснить, когда вам нужно вызвать Dispose, кроме просмотра документов и определения, влияет ли объект на IDisposable (или intellisense).