【问题标题】:Quickly replace int with enum values用枚举值快速替换 int
【发布时间】:2019-10-17 10:15:58
【问题描述】:

我正在尝试用(现有的)枚举值替换一些神奇的 int 数字。有很多情况,所以我想知道是否有加速这个过程的快捷方式或插件。

例子:

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

这个类型有一个枚举:

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

最后,这是我想要实现的:

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

我可以手动执行此操作,没问题。但是我总是必须在我的枚举中搜索正确的值,复制/粘贴值等。这需要很长时间。

是否有可以加快此过程的 Visual Studio / Resharper 快捷方式或插件?


编辑:我不需要完全自动化的流程。只是加快此过程的好方法。

尤其是这部分:

MyEnum myType = (MyEnum) 2;

是否没有工具可以将(MyEnum) 2 替换为MyEnum.TypeB

我理想的工作流程是这样的:将 myType 的类型更改为 MyEnum,然后神奇地将任何已知的 int 值替换为它们对应的枚举。

【问题讨论】:

  • 我看不出自动化工具如何区分应该转换为枚举的数字和不应转换为枚举的相同数字...
  • 您可以将myType = 2; 替换为myType = (TypeA) 2;,这将保持旧值不变,新代码将被强类型化。如果您必须更改很多地方,这可能是一个更快的解决方案。
  • @tymtam 这是个好主意!但仍然:我必须查找 TypeA 以获取我手动替换的任何值。我理想的工作流程是这样的:将myType 的类型更改为MyEnum,然后神奇地将任何已知的int 值替换为它们对应的枚举...
  • 我不知道有任何这样的工具,FWIW
  • 您可以尝试从 VS 内部或外部在您的 repo 上运行 powershell 脚本。只需扫描所有 .cs 文件,进行模式匹配并替换所有出现。但是,是否有任何您不想替换的 int 变量?

标签: c# visual-studio refactoring resharper


【解决方案1】:

您可以使用 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

【讨论】:

    【解决方案2】:

    用于自动化(MyEnum)2; ---> MyEnum.TypeB

    A.搜索和替换

    您可以运行一系列“搜索和替换”:

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

    肯定有人能够证明一个更好的正则表达式,它可以一次性替换多个值。

    B.应用

    编写一个读取所有文件并替换的 C# 应用程序

    (MyEnum) number`
    

    类似的东西

    $"MyEnum.{((MyEnum)number).ToString()}"
    

    【讨论】:

    • 是的,这就是我要找的。但是,我想知道是否某些 VS Extensions 已经内置了这种功能。我尝试在 Resharper 中创建自定义模式,但我认为替换选项太有限了...
    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多