Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/07/2013, 21:05
Goku00_1
 
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