“封装字段”重构操作能够从现有字段中快速创建属性,然后通过对新属性的引用无缝更新代码。
当某个字段是 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);