Обычно не вызывая Dispose указывает на возможную ошибку или неаккуратный код и может привести к некоторым трудным для поиска ошибкам. В идеале я хотел бы определить, не был ли вызван метод Disposed во время юнит-тестов.
Одним из методов, которые мы использовали, было поместить Debug.Assert в Финализатор
#if DEBUG
~MyClass()
{
Debug.Assert(false, “MyClass.Dispose() was not called”);
}
#endif
И мы обнаружили, что перебираем окна сообщений assert, но это не очень хорошо работает со сборками непрерывной интеграции, которые игнорируют всплывающие окна.