Me he acostumbrado a muchos de los IDEs de Java ( Eclipse , NetBeans y IntelliJ IDEA ) que le proporcionan un comando para generar un constructor predeterminado para una clase basada en los campos de la clase.
Por ejemplo:
public class Example
{
public decimal MyNumber { get; set; }
public string Description { get; set; }
public int SomeInteger { get; set; }
// ↓↓↓ This is what I want generated ↓↓↓
public Example(decimal myNumber, string description, int someInteger)
{
MyNumber = myNumber;
Description = description;
SomeInteger = someInteger;
}
}
Hacer que un constructor complete todos los campos de un objeto es una tarea tan común en la mayoría de los lenguajes OOP, supongo que hay una forma de ahorrar tiempo al escribir este código repetitivo en C #. Soy nuevo en el mundo de C #, así que me pregunto si me estoy perdiendo algo fundamental sobre el lenguaje. ¿Hay alguna opción en Visual Studio que sea obvia?
En Visual Studio 2015 Update3 tengo esta característica.
Simplemente resaltando las propiedades y luego presione Ctrl+ .y luego presione Generar constructor .
Por ejemplo, si ha resaltado dos propiedades, le sugerirá que cree un constructor con dos parámetros y si ha seleccionado tres, le sugerirá uno con tres parámetros, etc.
También funciona con Visual Studio 2017.
fuente
public int Age { get; }
) Deben tener los setters especificados, incluso si son temporales, para que la opción esté disponible. Probado en la comunidad VS2015; No estoy seguro si esto se ha solucionado en VS2017.C # agregó una nueva característica en Visual Studio 2010 llamada generar a partir del uso. La intención es generar el código estándar a partir de un patrón de uso. Una de las características es generar un constructor basado en un patrón de inicialización.
Se puede acceder a la función a través de la etiqueta inteligente que aparecerá cuando se detecte el patrón.
Por ejemplo, digamos que tengo la siguiente clase
Y escribo lo siguiente en mi solicitud
Un constructor que toma un
int
no existe, por lo que aparecerá una etiqueta inteligente y una de las opciones será "Generar código auxiliar de constructor". Al seleccionar eso, se modificará el código paraMyType
que sea el siguiente.fuente
Podría escribir una macro para hacer esto; usaría el analizador de Visual Studio para recuperar información sobre los miembros de la clase.
Escribí una macro similar. (Compartiré el código a continuación). La macro que escribí es para copiar todos los constructores en una clase base cuando heredas de ella (útil para clases como Exception que tienen muchas sobrecargas en el ctor).
Aquí está mi macro (de nuevo, no resuelve su problema, pero probablemente puede modificar para hacer lo que quiera)
fuente
A partir de Visual Studio 2017, parece ser una característica incorporada. Presiona Ctrl+ .mientras tu cursor está en el cuerpo de la clase y selecciona "Generar constructor" en el menú desplegable Acciones rápidas y refactorizaciones .
fuente
Aquí hay una macro que uso para ese propósito. Generará un constructor a partir de campos y propiedades que tengan un setter privado.
fuente
Tal vez podría probar esto: http://cometaddin.codeplex.com/
fuente
Puede hacerlo fácilmente con ReSharper 8 o posterior. El
ctorf
,ctorp
yctorfp
fragmentos generan constructores que pueblan todos los campos, propiedades o campos y propiedades de una clase.fuente
Aquí está la macro de Visual Studio de JMarsh modificada para generar un constructor basado en los campos y propiedades de la clase.
fuente
Para Visual Studio 2015 encontré una extensión que hace exactamente esto. Parece funcionar bien y tiene una cantidad razonablemente alta de descargas. Entonces, si no puede o no quiere usar ReSharper, puede instalar este.
También puede adquirirlo a través de NuGet .
fuente
Estoy usando el siguiente truco:
Selecciono la declaración de la clase con los miembros de datos y presiono:
Ctrl+ C, Shift+ Ctrl+ C, Ctrl+ V.
El PROGRAMA obtiene la declaración del portapapeles, encuentra el nombre de la clase, busca todos los miembros y sus tipos, genera un constructor y lo copia todo nuevamente en el portapapeles.
Lo estamos haciendo con estudiantes de primer año en mi práctica de "Programación-I" (Universidad de Charles, Praga) y la mayoría de los estudiantes lo hacen hasta el final de la hora.
Si quieres ver el código fuente, avísame.
fuente