Я хотел бы создать код исправления Roslyn, что изменения приписываемое например, такого кода:Может ли код Roslyn Fix работать на нескольких независимых сайтах?
public class CommandHandler
{
[Command("Cmd1")]
public void Foo()
{
// do something
}
[Command("Cmd2")]
public void Bar()
{
// do something
}
}
к этому:
public class CommandHandler
{
public void Foo()
{
// do something
}
public void Bar()
{
// do something
}
public void Execute(string command)
{
switch(command)
{
case "Cmd1":
Foo();
break;
case "Cmd2":
Bar();
break;
}
}
}
Основные требования:
- Подпись для рефакторинга - любой метод, связанный с атрибутом
[Command]
. - В классе может быть несколько таких методов.
- Метод синтезированного
Execute()
должен сохранять существующие случаи и добавлять новые.
Возможно ли создать такой рефакторинг, чтобы я мог попросить его исправить все экземпляры проекта за один раз? Это вопрос выполнимости, который поможет мне избежать столкновения с тупиком, если таковой имеется.
Одна вещь, которую вы можете сделать, это проверить каждый метод, см если у него есть атрибут, и если это так: посмотрите, есть ли у вас метод 'Execute()'. Если вы это сделаете, добавьте этот случай; если вы этого не сделаете: вы создаете метод и добавляете его. –