2012-01-17 11 views
9

En VS2010 C# puede, en una clase, escribir ctor y luego presionar tab y VS creará un constructor para esa clase para mí. Muy conveniente.Acceso directo para crear un constructor con variables (C# VS2010)

¿Pero hay alguna manera de hacer que VS cree un constructor con todas mis variables, propiedades, etc.?

por ejemplo.

public class User 
{ 
    public String UserName { get; private set; } 
} 

Y para esto, quiero ctor + pestaña para hacerme un

public User(string UserName) 
{ 
    this.UserName = UserName; 
} 
+4

¿Por qué querrías crear un constructor que violara las convenciones de nomenclatura de .NET? –

+0

@Markus: ¿ha considerado utilizar los constructores de objetos de estilo más nuevos en los clientes de generación? –

+1

@Garry Vass No, ni siquiera sé de qué se trata. – Markus

Respuesta

4

Gracias a Samuel Slade (me dice que se llama código-fragmentos) he conseguido encontrar otra respuesta stackoverflow: Snippet code to create constructor in VS2010 Express

y parece que la respuesta es NO, no sin ningún plugin/extensión. Muchos se refieren a la extensión ReShaper.

10

Creo que lo que se está refiriendo a es de fragmentos de código. Puede escribir sus propios fragmentos de código (están escritos en XML). Ver here para un punto de partida.

También debería poder editar los fragmentos de código existentes (como el ctor uno). Consulte MSDN para obtener más información al respecto.

Nota: Si utiliza Google Code Snippets, se abrirán más tutoriales y referencias.

+2

Gracias por el fragmento de código, pero parece que la respuesta es no ... No es posible crear esos fragmentos avanzados. – Markus

14

Usted especie de puede hacer esto al revés; si inicia sin el constructor o campo, y trata de usar el constructor inexistente, puede presionar ctrl + . para pedirle que genere una para ti, el uso-primera:

enter image description here

Este compilador genera entonces algo no muy diferente:

public class User 
{ 
    private string username; 

    public User(string username) 
    { 
     // TODO: Complete member initialization 
     this.username = username; 
    } 
} 

Luego, puede solucionar este problema de forma manual si es necesario (tal vez usando el refactor de renombrado incorporado, etc.). Pero no bastante lo que quería.

+0

Bueno, la razón por la que quiero un fragmento así es porque tengo un número bastante grande de propiedades, y eso aceleraría mucho el trabajo si tuviera una. – Markus

1

Como han notado otros, no es posible crear fragmentos que sean tan inteligentes.

Hay un complemento de estudio visual gratuito llamado Comet que puede hacer lo que desee. http://cometaddin.codeplex.com/

2

El fragmento de código "ctor" solo crea un constructor en blanco, pero no utiliza los atributos existentes de la clase en este constructor.

Sin embargo, las últimas versiones de Resharper le permiten elegir los campos que se incluirán en un constructor (como hace eclipse hace mucho tiempo).

1

Si está usando el acceso directo ReSharper es Alt+Insert

Source

+1

¡Dulce, de hecho estoy usando Resharper, así que eso funciona para mí! (Sin embargo, no lo marcaré como una solución ya que debe tenerlo, y sé que mucha gente no) – Markus

+0

Lo siento, solía utilizar este shorcut antes, pero ahora reinstalo Visual Studio y esta combinación no No funciona, y antes nunca he instalado Resharper. –

+0

Asegúrese de que Resharper Shortcuts es el que está por defecto en su VS –

0

ctorf esto le permitirá crear un contructor con argumentos generados en base a campos definidos en la clase.

+1

No tengo mi VS2017 para probar, pero ¿está seguro de que no es un fragmento de ReSharper? – Markus

+1

yup. tienes razón. dejándolo aquí porque es bueno saber si tienes reafilamiento. – dirtyw0lf

Cuestiones relacionadas