封装字段重构 (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. 如果选择了**“预览引用更改”选项,则将打开“预览引用更改”窗口。 单击“应用”**按钮。

    源文件中将显示下面的 get 和 set 访问器代码:

    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);
    

备注

仅当将光标与字段声明置于同一行时,才可以执行**“封装字段”**操作。

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

此重构操作生成的代码将由封装字段代码段功能来建模。 代码段是可修改的。 有关更多信息,请参见 如何:管理代码段

请参见

参考

Visual C# 代码段

概念

重构 (C#)