Compartir a través de


Encapsular campo (Refactorización, C#)

La operación de refactorización Encapsular campo permite crear rápidamente una propiedad a partir de un campo existente y, a continuación, actualizar el código de forma transparente con referencias a la nueva propiedad.

Cuando un campo es público, los otros objetos tendrán acceso directo a ese campo y podrán modificarlo, sin que el objeto que posee el campo lo detecte.Mediante propiedades que encapsulen los campos, puede deshabilitar el acceso directo a ellos.

Para crear la nueva propiedad, la operación Encapsular campo cambia el modificador de acceso del campo que desea encapsular a private y, a continuación, genera descriptores de acceso get y set para ese campo.En algunos casos, sólo se genera un descriptor de acceso get, por ejemplo cuando el campo se declara de sólo lectura.

El motor de refactorización actualiza el código con referencias a la nueva propiedad en las áreas especificadas en la sección Actualizar referencias del cuadro de diálogo Encapsular campo.

Para crear una propiedad a partir de un campo

  1. Cree una aplicación de consola denominada EncapsulateFieldExample y, a continuación, reemplace Program por el ejemplo de código siguiente.

    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. En editor de código, coloque el cursor en la declaración, en el nombre del campo que desea encapsular.En el ejemplo siguiente, coloque el cursor en palabra width:

    public int width, height;
    
  3. En el menú Refactorizar, haga clic en Encapsular campo.

    El cuadro de diálogo Encapsular campo aparece.

    También puede presionar CTRL+R, E, que es el método abreviado de teclado para mostrar el cuadro de diálogo Encapsular campo.

    O bien, puede hacer clic con el botón secundario en el cursor, señalar Refactorizar y, a continuación, hacer clic en Encapsular campo para mostrar el cuadro de diálogo Encapsular campo.

  4. Especifique la configuración.

  5. Presione ENTRAR o haga clic en el botón Aceptar.

  6. Si ha seleccionado la opción Vista previa de los cambios de referencia, se abrirá la ventana Vista previa de los cambios de referencia.Haga clic en el botón Aplicar.

    Aparece el siguiente código fuente de los descriptores de acceso get y set en el archivo de código fuente:

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

    El código del método Main también se actualiza con el nuevo nombre de propiedad Width.

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

Comentarios

La operación Encapsular campo sólo es posible cuando el cursor se encuentra en la misma línea que la declaración de campo.

Para las declaraciones de varios campos, Encapsular campo usa la coma como límite de separación entre los campos e inicia la refactorización en el campo que está más cerca del cursor, en la misma línea que el cursor.También puede especificar qué campo desea encapsular seleccionando el nombre de dicho campo en la declaración.

El código generado por esta operación de refactorización se modela mediante la característica de fragmentos de código de Encapsular campo.Los fragmentos de código se pueden modificar.Para obtener más información, vea Fragmentos de código.

Vea también

Referencia

Fragmentos de código de Visual C#

Conceptos

Refactorización (C#)