我之前使用VS 2010中包含的自动代码段在枚举上生成了一个switch语句(我按了sw [tab] [tab])。后来我扩展了枚举类型。它现在包含更多值。现在我想更新switch语句,以便它再次包含所有可能的枚举值的大小写。是否可以自动生成枚举的所有缺失案例,同时保留现有的案例,而不是手动执行?
答案 0 :(得分:3)
据我所知,没有办法做到这一点。甚至没有Resharper。最好的办法是使用find in files来查找包含该枚举的switch语句的所有实例。
示例:如果您的枚举被调用Bob
,那么生成的switch语句可能如下所示:
switch (someValue)
{
case Bob.one:
break;
case Bob.two:
break;
case Bob.three:
break;
default:
throw new ArgumentOutOfRangeException();
}
因此,在这种情况下,您可以在“case Bob.
”中查找文件,然后手动为新项目添加案例。
修改强>
@ RichieHindle的建议非常酷。基本上做正则表达式替换文件以将您的新案例附加到现有案例。在上面的示例中,假设您要向名为Bob
的{{1}}添加新项目,您需要使用以下内容替换zero
的正则文件:
case Bob\.one:
(可能不得不乱用正则表达式,但这应该会给你一个良好的开端)
答案 1 :(得分:1)
刚刚找到一个有趣的技巧来解决这个问题。一次又一次地重新审视这个问题感到很沮丧。
我在前一个下面创建了一个新的switch语句,我输入了sw(tab)(tab)来创建自动生成的语法。然后我将enum变量输入到开关代码中,以生成所有可能选项的完整列表。
我复制了所有保留默认值并粘贴在上一个切换部分默认选项上方的选项。
Visual Studio足够聪明,可以显示重复的选项,我所要做的就是删除它们。
比查看完整列表还要快得多。
答案 2 :(得分:0)
你需要做的是sw [tab] [tab] - 它应该给你类似" switch(switch_on)"在哪里" switch_on"被标记。现在开始输入你的枚举名称 - 这里也可以有SomeOtherClass.SomeOtherClassesEnum - 只是不要开始移动光标。当您在括号内使用全名时,按[Enter] - boom,所有enum-cases + default都在那里。
答案 3 :(得分:0)
我知道这是一个非常古老的版本,但是如果某些人仍然对VS 2019感兴趣,则可以单击“开关”,然后单击“快速操作和重构”,然后在菜单中单击“添加缺少的案例”选项。