VS API для упрощения процесса автоматизации исправления разрывов кода после рефакторинга

2

Я нашел бесчисленное количество раз, реорганизовывая наше решение (72 + проекты), в усилиях по сокращению кода. Много раз это связано с вытаскиванием общих типов/библиотек и их перемещением.

Он всегда включает ошибку репликации компилятора, поэтому мне приходится исправлять ту же ошибку компилятора во многих разных местах. Я ищу руководство для VS api, поэтому я могу сделать некоторые генерации кода/автоматическую фиксацию.

Даже если у вас нет точного решения, можете ли вы указать мне, где я должен выглядеть? Есть ли компилятор api? рефактор api? Любые предложения о том, как я могу сделать это?

Случаи использования:

Итак, первый вопрос (самый простой из двух):

Автоматическая фиксация при перемещении файла из одного проекта в другой. Этот процесс должен был бы найти ошибку

"Не удалось найти имя типа или пространства имен MovedClass.

Затем удалите старое пространство имен, добавьте новое и добавьте ссылку на проект.

Случай 2... рефакторинг с шаблоном.

Пример:

Оригинальный базовый класс VO:

   public class BaseVO{
      public AuditInfo { get;set;}

   }
   public class BaseKey{

   }

Все наши бизнес-объекты (каждый в отдельном классе).

   public class ExampleBusinessVO : BaseVO{
      public AuditInfo { get;set;}
      public ExampleBusinessKey BusinessKey { get;set;}
   }

   public class ExampleBusinessKey{


   }


Теперь предположим, что мы хотим добавить явную связь между BaseVO и базовым ключом и заставить всех реализовать Equals/HashCode

Новый базовый класс VO:

   public abstract class BaseVO<TKey>{
      TKey BusinessKey{get;set;}
      public abstract override bool Equals(object obj);          
      public abstract override int GetHashCode();

   }
   public class BaseKey{

   }

Затем я должен каскадировать эти изменения ко всем VO. (ouch)

   //Add generic
   public class ExampleBusinessVO : BaseVO<ExampleBusinessKey>{
       //Remove old business key  

        //Implement methods
       public override bool Equals(object obj){

       }
   }

   public class ExampleBusinessKey: BaseKey{


   }

Теперь я узнаю, что не могу исправить все ошибки, но было бы неплохо написать что-то, чтобы проверить класс на ошибки компиляции. Тогда я мог бы разработать прагматическое решение:

Для каждого из VO, если ошибка: "Использование универсального типа... требует 1 аргумент типа", затем прочитайте файл класса и найдите класс, реализующий BaseKey, а затем добавьте его в метод шаблона.

Обратите внимание, что я ищу автоматическое решение, а не инструмент рефакторинга

Теги:
refactoring
visual-studio-2008

1 ответ

3
Лучший ответ

Лично я бы рекомендовал ReSharper, поскольку он предоставляет функции для большинства рефакторинговых работ, которые могут вам понадобиться.

Перемещение типов (даже между проектами), типы переименования, методы извлечения, подписи порядка переупорядочения и т.д.

Это платное решение, но оно стоит ваших денег (или вашего работодателя). Вы можете скачать бесплатную пробную версию с сайта, который полностью функциональен, чтобы почувствовать его.

EDIT:

Хорошо, поэтому я только что проверил это, и ReSharper позаботится обо всех работах, необходимых для перемещения одного типа в другой проект, но он автоматически не добавит вам ссылки. Тем не менее, это дает вам справедливое предупреждение о необходимости использования новых ссылок, и добавление этих ссылок довольно просто, используя ReSharper:

Изображение 174551

  • 0
    Так что, если я перенесу тип из одного проекта в другой, он найдет и добавит ссылки на новый проект?
  • 0
    Я делаю это не очень часто, но я собираюсь предположить, что да. Я говорю это потому, что ReSharper достаточно умен, чтобы дать вам возможность добавить ссылку на тип, на который не ссылались при первом использовании. Поэтому, если я нахожусь в проекте A и использую тип из проекта B без ссылки на этот проект, ReSharper скажет: «Эй, вы хотите добавить ссылку на проект B»
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню