陈斌彬的技术博客

Stay foolish,stay hungry

封装字段重构

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

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

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

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

创建名为 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);
    }
}

在代码编辑器中,将光标置于声明中想要封装的字段的名称上。在下面的示例中,将光标置于单词 width 上:

C#
public int width, height;

在“重构”菜单中,单击“封装字段”。

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

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

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

指定设置。

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

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

源文件中会显示以下 get 和 set 访问器代码:

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

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

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

Resource Reference