Foros del Web » Programación para mayores de 30 ;) » .NET »

Manejar Hashtable que tiene varias clases.

Estas en el tema de Manejar Hashtable que tiene varias clases. en el foro de .NET en Foros del Web. Hola, tengo una pequeña duda sobre esto y no sé cómo solucionarlo >:c Tengo un Hashtable que guarda "Personas". También tengo otras clases que heredan ...
  #1 (permalink)  
Antiguo 03/07/2013, 21:05
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 5 meses
Puntos: 0
Manejar Hashtable que tiene varias clases.

Hola, tengo una pequeña duda sobre esto y no sé cómo solucionarlo >:c

Tengo un Hashtable que guarda "Personas". También tengo otras clases que heredan de Personas (Cliente, Vendedor)

Entonces en el Hashtable guardo una clave (RUN) que es única. Ahí todo bien.

myHashtable.Add(key, new Cliente());
myHashtable.Add(key, new Vendedor());
...
Y funciona perfecto cuando quiero mostrar los datos y bla bla.

El problema está cuando quiero editar el valor de un Hashtable

Según sé, debo hacer
Cliente c = (Cliente)myHashtable[key];

Pero, cómo puedo saber que esa key es de cliente?
Existe algún modo de pone el tipo de la variable automática dependiendo del tipo de la clase?

Traté con GetType(); que me devuelve "nombreproyecto.clase", pero no es como PHP que lo podría poner con {}.

En C# existe algo similar para lograr esto?


tengo algo así hecho (y funciona), pero es mucho código si agrego, no sé, 50 clases hijas.
Habrá un método más fácil para lograr esto?


Código:
public static bool editar(Persona persona)
        {
            if (!myHashtable.Contains(persona.RUN))
            {
                return false;
            }

            String[] tipo = persona.GetType().ToString().Split('.');

            if (tipo[1] == "Cliente")
            {
                Cliente c = (Cliente)myHashtable[persona.RUN];
                Cliente o = (Cliente)persona;
                c.Nombre = persona.Nombre;
                ... más datos
            }
            else if (tipo[1] == "Vendedor")
            {
                Vendedor c = (Vendedor)myHashtable[persona.RUN];
                Vendedor o= (Vendedor)persona;
                c.Nombre = persona.Nombre;
                ... más datos
            }
            return true;
        }

gracias :D

Etiquetas: manejar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:41.