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

StackOverflow https://stackoverflow.com/questions/1088710

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

class Program
{
    private DataTable NotDisposed;

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

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

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

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

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

Я не уверен, используете ли вы C# или VB, но в C# «лучший способ» обработки объектов типа IDisposable — поместить код в блок using.

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

ХТХ,

-Дэн

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top