【发布时间】:2015-09-24 18:44:15
【问题描述】:
我想创建一个 Roslyn 代码修复程序来更改属性代码,例如:
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()方法。如果这样做,则添加案例;如果你不这样做:你创建方法并添加案例。
标签: c# visual-studio refactoring roslyn