封装字段重构 (C#)

 

“封装字段”重构操作能够从现有字段中快速创建属性,然后通过对新属性的引用无缝更新代码。

当某个字段public 时,其他对象可以直接访问该字段并可对其进行修改,而拥有该字段的对象不会检测到。通过使用属性封装该字段,可以禁止对字段的直接访问。

若要创建新属性,“封装字段”操作会更改想要封装到 private 的字段的访问修饰符,并为该字段生成 getset 访问器。在某些情况下,仅生成 get 访问器(如当字段声明为只读时)。

重构引擎将通过对“封装字段”对话框的“更新引用”部分中指定区域中的新属性的引用更新你的代码。

从字段创建属性

  1. 创建名为 EncapsulateFieldExample 的控制台应用程序,然后将 Program 替换为下面的示例代码。

    class Square
    {
        // Select the word 'width' and then use Encapsulate Field.
        public int width, height;
    }
    class MainClass
    {
        public static void Main()
        {
            Square mySquare = new Square();
            mySquare.width = 110;
            mySquare.height = 150;
            // Output values for width and height.
            Console.WriteLine("width = {0}", mySquare.width);
            Console.WriteLine("height = {0}", mySquare.height);
        }
    }
    
  2. 代码编辑器中,将光标置于声明中想要封装的字段的名称上。在下面的示例中,将光标置于单词 width 上:

    public int width, height;
    
  3. 在“重构”菜单中,单击“封装字段”。

    “封装字段”对话框随即出现。

    还可以键入键盘快捷键 CTRL+R、CTRL+E 来显示“封装字段”对话框。

    此外,还可以右键单击光标,指向“重构”,然后单击“封装字段”来显示“封装字段”对话框。

  4. 指定设置。

  5. 按 ENTER 或单击“确定”按钮。

  6. 如果选择了“预览引用更改”选项,则“预览引用更改”窗口会随即打开。单击“应用”按钮。

    源文件中会显示以下 getset 访问器代码:

    public int Width
    {
        get { return width; }
        set { width = value; }
    }
    

    Main 方法中的代码也将更新为新的 Width 属性名称。

    Square mySquare = new Square();
    mySquare.Width = 110;
    mySquare.height = 150;
    // Output values for width and height.
    Console.WriteLine("width = {0}", mySquare.Width);
    

备注

只有在将光标与字段声明置于同一行时才可以执行“封装字段”操作。

对于声明多个字段的声明,“封装字段”会使用逗号作为字段之间的边界,并对最邻近光标且与光标处于同一行的字段启动重构。还可以通过在声明中选择字段的名称来指定想要封装的字段。

通过此重构操作生成的代码将由封装字段代码片段功能来建模。代码片段是可修改的。有关详细信息,请参阅代码段

请参阅