Быстро заменить int значениями enum - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь заменить некоторые магические целые числа (существующими) значениями перечисления. Есть много случаев, поэтому мне интересно, есть ли ярлык или аддон, который ускоряет этот процесс.

Пример:

int myType;
//...
myType = 2;

Для этого типа есть перечисление:

enum MyEnum
{
    TypeA = 1,
    TypeB = 2,
    //...
}

В конце концов, это то, чего я хочу достичь:

MyEnum myType;
//...
myType = MyEnum.TypeB;

Я могу сделать это вручную, без проблем. Но тогда мне всегда нужно искать правильное значение в моем перечислении, копировать / вставлять значение и т. Д. Это займет довольно много времени.

Существует ли ярлык Visual Studio / Resharper или Addon, который может ускорить этопроцесс?


РЕДАКТИРОВАТЬ: Мне не нужен полностью автоматизированный процесс. Просто хороший способ ускорить этот процесс.

Особенно эта часть:

MyEnum myType = (MyEnum) 2;

Нет ли инструмента, который заменяет (MyEnum) 2 на MyEnum.TypeB?

Мой идеальный рабочий процесс будет выглядеть примерно так: Измените тип myType на MyEnum, а затем магически замените любые известные значения int на соответствующие им перечисления.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Для автоматизации (MyEnum)2; ---> MyEnum.TypeB:

A. Поиск и замена

Вы можете просто запустить серию «поиск и замена»:

  1. \(MyEnum\) 1 до MyEnum.TypeA
  2. \(MyEnum\) 2 доMyEnum.TypeB
  3. (...)

Кто-то наверняка сможет доказать лучшее регулярное выражение, которое заменяет несколько значений за один раз.

B. Приложение

Напишите приложение на C #, которое читает все ваши файлы и заменяет

(MyEnum) number`

чем-то вроде

$"MyEnum.{((MyEnum)number).ToString()}"
0 голосов
/ 17 октября 2019

Вы можете использовать инструмент «Найти и заменить текст» из самой Visual Studio.

https://docs.microsoft.com/es-es/visualstudio/ide/finding-and-replacing-text?view=vs-2019

Необходимо найти и заменить все решение:

(MyEnum) 1 with MyEnum.TypeA 
(MyEnum) 2 with MyEnum.TypeB

Вы просто должны проверить позже, есть ли место в некоторых классах CS.

(MyEnum)1 with MyEnum.TypeA 
(MyEnum)2 with MyEnum.TypeB
...