entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Polimorfismo con Listas Genéricas usando WinForms C#

Buenos días comunidad, estoy tratando de usar Listas<> pero tengo varias clases que son derivadas de una principal lo que quiero hacer es utilizar Polimorfismo para agregar los datos a una lista para despues mostrarlos en un datagridview.

public abstract class Producto { public string nombre; public int precio; } 

public class Bebida:Producto{ 
          public Bebida(string _nombre, int _precio){
             nombre= _nombre;
             precio=_nombre;
          } 
}

 public class Enlatado:Producto{ 
              public Enlatado(string _nombre, int _precio){
                 nombre= _nombre;
                 precio=_nombre;
              } 
    }

los datos de nombre y precio son agregados desde un textBox

0voto

carlossevi comentado

Por un lado: ¿Cuál es el problema? ¿Estás probando algún fragmento de código que no compila? Por otro ¿Para qué versión de .NET estás compilando? El polimorfismo ha sufrido cambios entre la 3.5 y la 4.0 del .NET Framework.

0voto

victor_esp comentado

Como agrego elementos a la lista utilizando las clases derivadas y despues mostrarlas en datagrid, la version de .NET es la 4.0

1 Respuesta

2votos

carlossevi Puntos63580

Debería servirte el siguiente código para generar una lista de Productos:

    System.Collections.Generic.List<Producto> productos = new System.Collections.Generic.List<Producto>();
    productos.Add(new Bebida("Cola",10));
    shapes.Add(new Enlatado("Atún",3));

    foreach (Producto p in productos)
    {
        p.Mostrar();
    }

El código está tomado del propio ejemplo de Microsoft: http://msdn.microsoft.com/es-es/library/ms173152.aspx

0voto

victor_esp comentado

Gracias Si me funciona pero, falta el código del método Mostrar(); pero el problema es que quiero que se muestren los elementos de la clase Bebida y Enlatados en un dataGridView

0voto

carlossevi comentado

Bueno, el método mostrar no es necesario para el dataGridView, es sólo un ejemplo de cómo se puede iterar sobre la lista y ejecutar un método común a todos los tipos de Producto.

El ejemplo sólo cubría la parte de polimorfismo, no del DataGridView (para mi son preguntas independientes).

----- Advertencia: a partir de aquí no lo he comprobado directamente -----

Tengo entendido que con una lista no se puede hacer un binding directamente a un DataGridView, como por ejemplo sí que sea hace con un DataTable.

Para poder hacer binding existe el objeto BindingList<T>, un ejemplo:

var bindinglist = new BindingList<Producto>(productos);
var source = new BindingSource(bindinglist, null);
tuDataGridView.DataSource = source;

Donde productos es tu lista de productos anteriormente creada.

Espero que te funcione.

0voto

victor_esp comentado

Ya funciono, Gracias!!! por resolver mis dudas :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta