¿Cómo podemos generar captadores y establecedores en Visual Studio?


226

Por "generar", me refiero a la generación automática del código necesario para una (s) variable (s) seleccionada (s) particular (es).

Pero cualquier explicación más explícita o comentario sobre buenas prácticas es bienvenida.

Respuestas:



51

Visual Studio también tiene una característica que generará una Propiedad a partir de una variable privada.

Si hace clic en una variable, en el menú contextual que aparece, haga clic en el elemento "Refactor", y luego elegir Encapsular campo ... . Esto creará una propiedad getter / setter para una variable.

No soy un gran admirador de esta técnica, ya que es un poco incómodo de usar si tienes que crear muchos captadores / establecedores, y coloca la propiedad directamente debajo del campo privado, lo que me molesta, porque generalmente tengo todos mis campos privados agrupados, y esta característica de Visual Studio rompe el formato de mi clase.


10
Desafortunadamente, esta opción no está dada por las ediciones express de Visual Studio.
Toby

12
también hay shourtcut - prefiero de esta manera :) - CTRL + R + E
Vukasin

32

Yo uso Visual Studio 2013 Professional.

  • Coloque el cursor en la línea de una variable de instancia.

    Ingrese la descripción de la imagen aquí

  • Presione las teclas combinadas Ctrl+ R, Ctrl+ Eo haga clic con el botón derecho del mouse. Elija el menú contextual RefactorizarEncapsular campo ... y luego presione OK.

    Ingrese la descripción de la imagen aquí

  • En Vista previa Cambios de referencia - Encapsular campo de diálogo, presione el botón Apply.

    Ingrese la descripción de la imagen aquí

  • Este es el resultado:

    Ingrese la descripción de la imagen aquí



También coloca el cursor para elegir una propiedad . Use el menú EditarRefactorizarEncapsular campo ...

  • Otra información:

    Desde C # 3.0 (19 de noviembre de 2007), podemos usar propiedades implementadas automáticamente (esto es simplemente azúcar sintáctico ).

    Y

    private int productID;
    
    public int ProductID
    {
        get { return productID; }
        set { productID = value; }
    }

    se convierte

    public int ProductID { get; set; }

30

Por generar, ¿te refieres a autogenerar? Si eso no es lo que quieres decir:

Visual Studio 2008 tiene la implementación más fácil para esto:

public PropertyType PropertyName { get; set; }

En segundo plano, esto crea una variable de instancia implícita en la que se almacena y recupera su propiedad.

Sin embargo, si desea poner más lógica en sus Propiedades, tendrá que tener una variable de instancia para ello:

private PropertyType _property;

public PropertyType PropertyName
{
    get
    {
        //logic here 
        return _property;
    }
    set
    {
        //logic here
        _property = value;
    }
 }

Las versiones anteriores de Visual Studio siempre usaban este método de mano larga también.


¿No es el estándar en C # el guión inferior después del nombre del miembro en property_lugar de antes _property?
Julen

2
@Julen: siempre he visto la convención _property.
Nathan DeWitt

27

También puedes usar "propfull" y golpear TABdos veces.

Se generará la variable y la propiedad con get y set.


este es el más útil y siempre lo olvido
Dave Alperovich

Estoy haciendo serialización XML y generando un montón de propiedades en todo el programa. + 100septillones de votos si pudiera. ¡Gracias! Editar- ¡INCLUSO MEJOR, script de autohotkey + ^ this = productividad por encima de 90000!
Eon

Video que muestra el uso del fragmento 'propfull' (entre otras cosas), a los 4 min 11 segundos.
Peter Mortensen

6

Si está utilizando Visual Studio 2005 y versiones posteriores, puede crear un setter / getter muy rápido usando el comando insert snippet.

Haga clic derecho en su código, haga clic en Insertar fragmento ( Ctrl+ K, X) y luego elija "accesorio" de la lista.


4

Si está utilizando ReSharper, vaya al menú ReSharper → CódigoGenerar ...

(O presione Alt+ Insdentro de la clase que lo rodea), y obtendrá todas las opciones para generar captadores y / o definidores que pueda pensar :-)


3

Usa la propfullpalabra clave.

Generará una propiedad y una variable.

Escriba la palabra clave propfullen el editor, seguido de dos TABs. Generará código como:

private data_type var_name;

public data_type var_name1{ get;set;}

Video que muestra el uso del fragmento 'propfull' (entre otras cosas), a los 4 min 11 segundos.


2
proporcione más información sobre su respuesta, las respuestas con una breve descripción no están bien para los próximos visitantes ...
Kiyarash

escriba la palabra clave propfull en el editor, generará código como tipo_datos_de_valor privado; public data_type var_name1 {get; set;}
avinash kadu

¿Puedes agregar una referencia para "propfull" ( editando tu respuesta , no aquí en los comentarios)?
Peter Mortensen

3

Creé mi propio fragmento que solo agrega {get; set;}. Lo hice solo porque encuentro que propTabes torpe.

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>get set</Title>
            <Shortcut>get</Shortcut>
        </Header>
        <Snippet>
            <Code Language="CSharp">
                <![CDATA[{get; set;}]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Con esto, escriba su PropType y PropName manualmente, luego escriba getTab, y agregará el conjunto. No es nada mágico, pero como tiendo a escribir mi modificador de acceso de todos modos, también podría terminar el nombre y el tipo.


2

En Visual Studio Community Edition 2015, puede seleccionar todos los campos que desee y luego presionar Ctrl+ .para generar automáticamente las propiedades.

Debe elegir si desea usar la propiedad en lugar del campo o no.


1

Además del fragmento 'prop' y las propiedades automáticas, hay una opción de refactorización que le permite seleccionar un campo existente y exponerlo mediante una propiedad ( haga clic con el botón derecho en el campo → RefactorizarEncapsular campo ... ).

Además, si no le gusta la implementación 'prop', puede crear sus propios fragmentos. Además, una herramienta de refactorización de terceros como ReSharper le proporcionará aún más funciones y facilitará la creación de fragmentos más avanzados. Recomiendo ReSharper si te lo puedes permitir.


El primer enlace redirige a la documentación retirada de Visual Studio 2005 . ¿A cuál de los diez se refería? Presumiblemente, es una descripción de cómo usar fragmentos en Visual Studio.
Peter Mortensen

1

En Visual Studio 2019, seleccione sus propiedades de esta manera:

ingrese la descripción de la imagen aquí

Luego presione Ctrl+r Luego presioneCtrl+e

Aparecerá un cuadro de diálogo que le mostrará la vista previa de los cambios que se realizarán en su código. Si todo se ve bien (que en su mayoría lo hará), presione OK.


0

Ya no tengo instalado Visual Studio en mi máquina (y estoy usando Linux), pero sí recuerdo que había un asistente oculto en algún lugar dentro de uno de los menús que daba acceso a un generador de clases.

Con este asistente, puede definir todos los detalles de sus clases, incluidos los métodos y atributos. Si mal no recuerdo, había una opción a través de la cual podías pedirle a Visual Studio que creara los setters y getters automáticamente para ti.

Sé que es bastante vago, pero échale un vistazo y es posible que lo encuentres.



0

Primero obtenga la Extensión, simplemente presione ( Ctrl+ Shift+ X) e instale getter setter ...

Después de esto, simplemente seleccione su variable y haga clic derecho. Ir a la paleta de comandos ...

Y escriba getter ... Le sugerirá generar métodos get y set. Haga clic en esto ...


1
¿Qué quiere decir con "Primero obtener extensión" ?
Peter Mortensen

¿En qué contexto se debe presionar Ctrl + Shift + X?
Peter Mortensen

-4

Simplemente presione Alt+ Insen Android Studio.

Después de declarar variables, obtendrá los captadores y definidores en el código generado.


Nadie preguntó sobre android studio
warzone_fz

La pregunta es "¿Cómo podemos generar captadores y establecedores en Visual Studio?" . Visual Studio no es lo mismo que Android Studio .
Peter Mortensen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.