Подтвердить что ты не робот

Может ли Visual Studio предупредить меня, когда я забуду удалить объект IDisposable?

Можно ли настроить Visual Studio 2008, чтобы предупредить меня, когда я забываю удалить объект, который реализует IDisposable?

4b9b3361

Ответ 1

Visual Studio сама по себе не имеет этой функции, но с CodeRush вы можете иметь предупреждения о времени разработки и рефакторинга для вставки с использованием блоков, где это необходимо.

Ответ 2

Если вы включите правила FxCop Design, он скажет вам, когда вы не реализуете IDisposable, и у вас есть члены, которые реализуют IDisposable, например:

class Program
{
    private DataTable NotDisposed;

    public Program()
    {
        NotDisposed = new DataTable();
    }
    static void Main()
    {
    }
}

Ответ 3

Я не думаю, что это можно сделать во время компиляции.

однако это можно сделать во время выполнения.
Я создал абстрактный класс "Одноразовый" (который реализует IDisposable и реализует одноразовый шаблон). В финализаторе я выдаю Assert, когда вызывается finalizer, и объект не был удален.

Я основывал это на статье Яна Гриффитса:

http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking

Ответ 4

Я не уверен, что вы используете С# или VB, но в С# метод "лучшей практики" для обработки объектов типа IDisposable состоит в том, чтобы поместить код в используемый блок.

"Оператор using позволяет программисту указывать, когда объекты, использующие ресурсы, должны их освобождать. Объект, предоставленный оператору using, должен реализовать интерфейс IDisposable. Этот интерфейс предоставляет метод Dispose, который должен освобождать ресурсы объекта." - Ссылка MSDN

НТН,

Дан