Generar a partir del uso

La característica Generar a partir del uso permite usar clases y miembros antes de definirlos. Puede generar un código auxiliar para cualquier clase, constructor, método, propiedad, campo o enumeración que desee utilizar pero no ha definido todavía. Puede generar nuevos tipos y miembros sin salir de su ubicación actual en el código. De este modo, se minimizan las interrupciones en el flujo de trabajo.

La característica Generar a partir del uso admite estilos de programación como el desarrollo de pruebas en primer lugar.

Usar Generar a partir del uso en C#

Aparece un subrayado ondulado debajo de cada identificador no definido. Al colocar el puntero del mouse sobre el identificador, aparece un mensaje de error en una información sobre herramientas.

Para mostrar las opciones adecuadas, puede usar uno de los procedimientos siguientes:

  • Haga clic en el identificador no definido. Aparecerá un subrayado corto debajo del carácter del extremo izquierdo. Sitúe el puntero del mouse sobre el subrayado y aparecerá una etiqueta inteligente (un icono). Haga clic en la etiqueta inteligente.

  • Haga clic en el identificador no definido y luego presione CTRL+. (punto).

  • Haga clic con el botón secundario en el identificador no definido y, a continuación, haga clic en Generar.

Entre las opciones que aparecen pueden estar las siguientes:

  • Generar código auxiliar de propiedad

  • Generar código auxiliar de campo

  • Generar código auxiliar del método

  • Generar clase

  • Generar nuevo tipo (para una clase, struct, interfaz o enumeración)

Usar Generar a partir del uso en Visual Basic

Aparece un subrayado ondulado debajo de cada identificador no definido y un subrayado corto debajo del carácter del extremo derecho. Al colocar el puntero del mouse sobre el identificador, aparece un mensaje de error en una información sobre herramientas.

Para mostrar las opciones adecuadas, puede usar uno de los procedimientos siguientes:

  • Sitúe el puntero del mouse sobre el identificador no definido. Aparecerá una etiqueta inteligente (un icono). Haga clic en la etiqueta inteligente.

  • Haga clic en el identificador no definido y luego presione CTRL+. (punto).

  • En la ventana Lista de errores, haga doble clic en la fila del error correspondiente.

Entre las opciones que aparecen pueden estar las siguientes:

  • Generar código auxiliar de propiedad

  • Generar código auxiliar de campo

  • Generar código auxiliar del método

  • Generar clase

  • Generar interfaz

  • Generar nuevo tipo (para una clase, estructura, interfaz, enumeración delegado o módulo)

Generar un código auxiliar de propiedad

Si en el código se hace referencia a una propiedad sin definir, haga clic en Generar código auxiliar de propiedad. El código auxiliar de propiedad se genera en la clase correspondiente. El tipo de valor devuelto de la propiedad se determina en función del contexto.

Por ejemplo, suponga que genera la propiedad InstanceProperty a partir de la instrucción del código siguiente.

Dim cust As New Customer()
Dim city As String = cust.InstanceProperty
Customer cust = new Customer();
string city = cust.InstanceProperty;

Al generar la propiedad, se crea el código auxiliar siguiente en la clase Customer.

Property InstanceProperty() As String
public string InstanceProperty { get; set; }

Si se invoca una propiedad en un tipo y no una instancia, el código auxiliar generado será una propiedad estática (C#) o una propiedad compartida (Visual Basic).

Por ejemplo, imagine que genera una propiedad a partir de la instrucción siguiente (suponiendo que Customer es un nombre de clase).

Dim description As String = Customer.SharedProperty
string description = Customer.StaticProperty;

Al generar la propiedad, se crea el código auxiliar siguiente en la clase Customer.

Shared Property SharedProperty As String
public static string StaticProperty { get; set; }

Si se invoca una propiedad sin una calificación (que haga referencia a un miembro del tipo actual), el código auxiliar generado es estático si se llama a la propiedad desde un método estático. De lo contrario, es una propiedad de instancia.

Por ejemplo, suponga que genera una propiedad a partir de la instrucción siguiente.

Dim title As String = UnqualifiedProperty
string title = UnqualifiedProperty;

Al generar la propiedad, se crea el código auxiliar siguiente en la clase actual.

Private Property UnqualifiedProperty() As String
public string UnqualifiedProperty { get; set; }

Generar un código auxiliar de método

Si en el código se hace referencia a un método sin definir, haga clic en Generar código auxiliar del método. El código auxiliar del método se genera en la clase correspondiente.

El tipo de cada parámetro y el tipo de valor devuelto se determinan en función del contexto. Se usa el tipo de objeto cuando no se puede deducir el tipo, como en tipos anónimos o variables locales tipificadas implícitamente (variables definidas con la palabra clave var).

El nombre de cada parámetro se deriva de los nombres de los argumentos que se pasan a la llamada al método.

Por ejemplo, suponga que genera el método InstanceMethod a partir de la instrucción del código siguiente.

Dim cust As New Customer()
Dim itemNumber = 3
Dim itemName = "abc"
cust.InstanceMethod(itemNumber, itemName, 4)
Customer cust = new Customer();
int itemNumber = 3;
string itemName = "abc";
cust.InstanceMethod(itemNumber, itemName, 4);

Al generar el método, se crea el código auxiliar siguiente en la clase correspondiente.

Sub InstanceMethod(ByVal itemNumber As Integer, ByVal itemName As String, ByVal p3 As Integer)
    Throw New NotImplementedException
End Sub
internal void InstanceMethod(int itemNumber, string itemName, int p)
{
    throw new NotImplementedException();
}

Si se invoca un método en un tipo y no una instancia, el código auxiliar generado es un método estático (C#) o un método compartido (Visual Basic).

Generar un código auxiliar de método para un evento

En Visual Basic, puede generar un método de controlador de eventos para un evento al que se hace referencia en AddHandler (Instrucción) o RemoveHandler (Instrucción).

Por ejemplo, suponga que genera el método EventHandler a partir de alguna de las siguientes instrucciones del código.

AddHandler obj.Ev_Event, AddressOf EventHandler
RemoveHandler obj.Ev_Event, AddressOf EventHandler

Al generar el método, se crea el código auxiliar siguiente en la clase actual.

Private Sub EventHandler()
    Throw New NotImplementedException
End Sub

Generar un código auxiliar de constructor

Si en el código se hace referencia a un constructor sin definir, haga clic en Generar código auxiliar de constructor. El código auxiliar de constructor se genera en la clase correspondiente. El tipo de cada parámetro se determina en función del contexto.

Se examinan los nombres de los parámetros del constructor. Si la clase tiene propiedades con nombres que coinciden con esos nombres de parámetro, se proporciona código en el constructor para almacenar los valores de argumento de esas propiedades.

Por ejemplo, suponga que genera un constructor para la propiedad Example a partir de la instrucción del código siguiente.

Dim total As Long = 12
Dim exampleTest As New Example(5, total, Date.Now)
long total = 12;
Example exampleTest = new Example(5, total, System.DateTime.Now);

Si aún no están presentes, al generar el constructor se crean las siguientes variables privadas en la clase Example.

Private _p1 As Integer
Private _total As Long
Private _p3 As Date
private int p;
private long total;
private DateTime dateTime;

Se crea el código auxiliar de constructor siguiente.

Sub New(ByVal p1 As Integer, ByVal total As Long, ByVal p3 As Date)
    ' TODO: Complete member initialization 
    _p1 = p1
    _total = total
    _p3 = p3
End Sub
public Example(int p, long total, DateTime dateTime)
{
    // TODO: Complete member initialization
    this.p = p;
    this.total = total;
    this.dateTime = dateTime;
}

Puede generar más de un constructor en una clase. Se puede generar un constructor adicional si la llamada al constructor tiene un número diferente de argumentos o distintos tipos de argumentos.

En Visual Basic, también se puede generar un constructor al generar una clase. Vea la siguiente sección de este tema para obtener más información.

Generar una clase

Si en el código se hace referencia a una clase no definida u otro tipo, se muestran opciones para Generar clase y Generar nuevo tipo.

Si hace clic en Generar clase, se genera un código auxiliar de clase vacío en un nuevo archivo del proyecto. El nuevo archivo se abre en el editor de código (pero no obtiene el foco). Ésta es la manera más rápida de crear un nuevo tipo de clase con modificadores de acceso predeterminados en un nuevo archivo del proyecto actual.

Por ejemplo, suponga que genera una clase a partir de la instrucción siguiente.

Dim cust As Customer
Customer cust;

Al generar la clase, se crea el siguiente nuevo código auxiliar de clase en un nuevo archivo del proyecto.

Class Customer

End Class
namespace CSharpWindowsApp
{
    class Customer
    {
    }
}

También puede utilizar el comando Generar clase cuando haya una clase base heredada no definida en una definición de clase.

Generar una clase junto con un constructor

En Visual Basic, la clase generada incluirá un constructor, si fuera apropiado.

Por ejemplo, suponga que genera una clase a partir de la instrucción siguiente.

Dim total = 3
Dim exampleTest As New Example(5, total, Date.Now) With {.Description = "book"}

Al generar la clase, se crea el siguiente nuevo código auxiliar de clase en un nuevo archivo del proyecto. El constructor se genera en la clase. Se crea una propiedad Description para el inicializador de objeto que se encuentra en la cláusula With del código anterior.

Class Example
    Private _p3 As Date
    Private _total As Integer
    Private _p1 As Integer

    Sub New(ByVal p1 As Integer, ByVal total As Integer, ByVal p3 As Date)
        ' TODO: Complete member initialization 
        _p1 = p1
        _total = total
        _p3 = p3
    End Sub

    Property Description As String
End Class

Generar tipos nuevos con opciones adicionales

Si en el código se hace referencia a una clase, interfaz, enumeración, struct (C#) o estructura (Visual Basic) sin definir, se muestran opciones para Generar clase y Generar nuevo tipo. Esto se muestra en las ilustraciones siguientes.

Visual Basic

Menú contextual de etiqueta inteligente en Visual Basic

Visual C#

Menú contextual de etiqueta inteligente en C#

Haga clic en Generar nuevo tipo para abrir el cuadro de diálogo Generar nuevo tipo, que le permite elegir un nivel de acceso, un tipo, una ubicación de proyecto y un nombre de archivo.

La opción Generar nuevo tipo proporciona flexibilidad adicional a la hora de generar una clase. Es posible que prefiera colocar la clase en un archivo existente o especificar los modificadores de acceso o agregar el nuevo archivo a otro proyecto de la solución.

En la ilustración siguiente se muestra el cuadro de diálogo Generar nuevo tipo.

Cuadro de diálogo Generar nuevo tipo

Cuadro de diálogo Generar nuevo tipo

En la tabla siguiente se muestran las opciones disponibles en el cuadro de diálogo Generar nuevo tipo.

Opción

Opciones de C#

Opciones de Visual Basic

Acceso

Predeterminado, público, interno o privado.

Predeterminado, de confianza o público.

Kind

Clase, struct, interfaz o enumeración.

Clase, estructura, interfaz, enumeración, delegado o módulo.

Ubicación del proyecto

Proyecto actual u otro proyecto de la solución.

Proyecto actual u otro proyecto de la solución.

Nombre de archivo

Crear nuevo archivo con nombre de archivo o Agregar a archivo existente con nombre de archivo.

Crear nuevo archivo con nombre de archivo o Agregar a archivo existente con nombre de archivo.

Si el tipo se genera en un nuevo archivo, éste contendrá el conjunto predeterminado de directivas using para una clase generada por el cuadro de diálogo Agregar nuevo elemento.

Si el tipo se genera en otro proyecto de la solución, se agrega al archivo actual una directiva using que hace referencia a ese proyecto.

Generar un código auxiliar de interfaz

Para generar código desde una interfaz sin definir, haga clic en Generar nuevo tipo. Se abre el cuadro de diálogo Generar nuevo tipo. En la lista Tipo, haga clic en Interfaz. En Visual Basic, también puede hacer clic en Generar interfaz.

Por ejemplo, supongamos que genera la interfaz IAuto a partir de la instrucción del código siguiente.

Public Class Sedan : Implements IAuto
End Class
public class Sedan : IAuto
{
}

Al generar la interfaz, se crea el código auxiliar siguiente.

Interface IAuto

End Interface
interface IAuto
{
}

Generar un código auxiliar delegado

Para generar código desde un delegado no definido en Visual Basic, haga clic en Generar nuevo tipo. Se abre el cuadro de diálogo Generar nuevo tipo. En la lista Tipo, haga clic en Delegado.

Por ejemplo, suponga que genera el delegado MathOperator a partir de la instrucción del código siguiente.

Dim delInstance As New MathOperator(AddressOf AddNumbers)

Al generar el delegado, se crea el código auxiliar siguiente.

Delegate Sub MathOperator()

Modo de sugerencia de IntelliSense

IntelliSense proporciona dos alternativas para la finalización de instrucciones: el modo de finalización y el modo de sugerencias. Emplee el modo de sugerencia en aquellas situaciones en que las clases y los miembros se usen antes de definirlos.

En el modo de sugerencias de IntelliSense, cuando se escribe en el editor de código y, a continuación, se confirma la entrada, el texto escrito se inserta en el código. Cuando se confirma una entrada en el modo de finalización de IntelliSense, la entrada resaltada en la lista de miembros se inserta en el código.

Cuando se abre una ventana de IntelliSense, puede presionar CTRL+ALT+BARRA ESPACIADORA para alternar entre el modo de finalización y el modo de sugerencia.

Para obtener más información, vea Lista de miembros.

Vea también

Tareas

Tutorial: Compatibilidad del desarrollo de pruebas en primer lugar con la característica de generación a partir del uso

Otros recursos

Ayudas de codificación

Generación automática de código