Как сделать все классы IDisposable цветными по-разному в среде Visual Studio?

Название охватывает все. Я бы хотел, чтобы классы, реализующие IDisposable, отображались в определенном цвете, поэтому я могу знать, должен ли я обернуть их в блок использования. Есть ли настройка или процесс, с помощью которого вы можете расширить IDE?

Ответы

Ответ 1

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

Посетите http://msdn.microsoft.com/en-us/vsx/bb980955.aspx, чтобы начать. Как указывают другие. Это не для слабонервных.

Здесь ссылка, которая может указывать на то, что вы ищете: http://msdn.microsoft.com/en-us/library/bb166778.aspx

Ответ 2

Я предполагаю, что это станет проще/без расширения, как только Roslyn выйдет, но это сейчас нелегко, потому что вы не можете легко получить доступ к коду как С# из расширения.

В Resharper это легко, хотя! Мой пример был протестирован в ReSharper 9.0. К сожалению, нет простого способа дать вам это.

  • Resharper → Параметры → Проверка кода → Пользовательские шаблоны → Добавить, диалог всплывает
  • Выберите С# (верхний левый)
  • Выберите "Найти" (вверху справа)
  • Добавьте шаблон new $disp$($args$)
  • Тяжесть рисунка: Показать как предложение
  • Описание: Одноразовая конструкция
  • "Добавить заполнитель" типа: Тип, имя: disp, введите: System.IDisposable
  • "Добавить заполнитель" типа: Аргументы, имя: args

Сохраните, и теперь вы получите "предложение" всякий раз, когда строится новое одноразовое хранилище.

Добавление шаблона $disp$ $var$ = $exp$; также может оказаться полезным. Все вещи, равные exp, определяются как выражение.

enter image description here

Ответ 3

Вы не можете. Для этого потребуется поддержка языкового обслуживания, и ни С#, ни VB.Net не предоставляют эту функцию.

Не может быть слишком сильным слова. Это, безусловно, возможно сделать с помощью надстройки, которая делает глубокую проверку кода и вычисляет иерархии. Однако это очень нетривиальная задача.

Ответ 4

Конечно, существует большой набор инструментов для построения VS-расширений, см. Visual Studio 2008 SDK 1.1 Но время, необходимое для создания такой надстройки, потребует больше времени, которое вы потратите, просматривая компоненты и определяя, являются ли они одноразовыми или нет.

Ответ 5

Я не уверен, если FXCop или StyleCop могут это сделать уже. Но тогда это будет предложение/предупреждение после компиляции.

Решайер предлагает это, я думаю.

Ответ 7

Может быть, я плохой человек для этого, но я недавно использовал этот кусок кода:

public static void BulkDispose(object[] objects)
{
  foreach (object o in objects)
  {
    if (o != null)
    {
      if (o is IDisposable)
      {
        IDisposable disposable = o as IDisposable;
        disposable.Dispose();
      }
    }
  }
}