Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将模块重构为类:将共享字段更改为实例字段_Vb.net_Visual Studio_Visual Studio 2010_Refactoring - Fatal编程技术网

Vb.net 将模块重构为类:将共享字段更改为实例字段

Vb.net 将模块重构为类:将共享字段更改为实例字段,vb.net,visual-studio,visual-studio-2010,refactoring,Vb.net,Visual Studio,Visual Studio 2010,Refactoring,我目前正在重构一个旧的VisualBasicDLL(VB.Net),它将所有数据存储在一个名为Globaldefinitions的模块中,作为公共字段。大约有200个字段,在代码中引用了数千次: Public Module Globaldefinitons Public a As Short ... Public zz10 As Double End Module 在DLL本身中,导入Globaldefinitions后,这些字段将使用其名称(无模块前缀)引用:

我目前正在重构一个旧的VisualBasicDLL(VB.Net),它将所有数据存储在一个名为Globaldefinitions的模块中,作为公共字段。大约有200个字段,在代码中引用了数千次:

Public Module Globaldefinitons
     Public a As Short
     ...
     Public zz10 As Double
End Module
在DLL本身中,导入Globaldefinitions后,这些字段将使用其名称(无模块前缀)引用:

我需要将模块更改为具有非共享字段的类。这意味着,这数千个引用中的每一个都需要引用该类的实例:

globalDefinitionsInstance.a = 5
我如何有效地进行这项工作


在源代码上运行的正则表达式将失效。重构工具如Re Sharper或CodeRush似乎没有提供这种功能。Visual Studio 2010也无法自动完成此操作。

以下是我更改此操作的方法。对于
GlobalDefinitions
中的每个字段,请执行以下操作

  • 使用Visual Studio Refactor Rename将其重命名为唯一名称
    Bad\u name\u a
    。这将把所有难以匹配的名称变成非常容易匹配的名称
  • Bad\u Name\u a
    执行全局搜索并替换为
    globalDefinitionInstance.Bad\u Name\u a
    。这里甚至不需要正则表达式。名称和替换项是唯一的
  • 使用Visual Studio重构重命名将其重命名为您选择的更好的名称

    • 以下是我改变这一点的方法。对于
      GlobalDefinitions
      中的每个字段,请执行以下操作

      • 使用Visual Studio Refactor Rename将其重命名为唯一名称
        Bad\u name\u a
        。这将把所有难以匹配的名称变成非常容易匹配的名称
      • Bad\u Name\u a
        执行全局搜索并替换为
        globalDefinitionInstance.Bad\u Name\u a
        。这里甚至不需要正则表达式。名称和替换项是唯一的
      • 使用Visual Studio重构重命名将其重命名为您选择的更好的名称

      我将首先使用内置的VS 2010重命名功能将
      a
      重命名为尽可能唯一的内容,例如
      replacetThisSillyPropertyNameNow
      。然后,您可以进行全局搜索,并使用所需的替换项替换新名称。

      我将首先使用内置的VS 2010重命名功能将
      a
      重命名为尽可能唯一的名称,例如
      ReplaceThisSillyPropertyNameNow
      。然后,您可以进行全局搜索,并用所需的替换项替换新名称。

      谢谢。这仍然需要大量的工作,但至少比简单的搜索和替换更安全。谢谢。这仍然需要大量的工作,但至少比简单的搜索和替换更安全。
      globalDefinitionsInstance.a = 5