C sharp - Casting en un Hashable

 
Vista:

Casting en un Hashable

Publicado por Cana (2 intervenciones) el 23/03/2005 12:38:06
Hola, tengo un problema al obtener objetos de un hashtable.

Resulta que dentro del hashtable puede haber n objetos de n clases distintas, Cuando obtengo uno de la forma

miObjeto = hashTable ["miClave"];

miObjeto es de tipo Object. Ahora para invocar sus métodos debo convertirlo a su tipo original, pero como a priori no se cual es, no puedo. Con type lo obtengo, y al imprimirlo lo hace correctamente, pero sigo sin poder hacer el cast:

miObjeto = (miClase) hashTable ["miClave"];

¿No existe alguna forma de poner "miClase" con algún método de Reflection o algo tipo?:

miObjeto = (miObjeto.getType()) hashTable ["miClave"];

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Casting en un Hashable

Publicado por Edgar (278 intervenciones) el 23/03/2005 12:56:09
Hola

Lo mas sencillo que puedes hacer para no complicarte mucho es hacer un switch donde preguntes por el tipo del objeto

Por ejemplo

switch ( typeof ( miObjeto ).ToString ( ) )
{
case "miClase":
return ( miClase ) miObjeto;
....
}

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Casting en un Hashable

Publicado por Cana (2 intervenciones) el 23/03/2005 14:05:25
Esa es una posible solución. Lo malo es que puede haber hasta 255 objetos, y el código se quedaría muy extenso.

Ahora estaba mirando si podía hacer un casting de Object a una clase concreta en tiempo de ejecución (con la clase Type), pero no encuentro nada.

Gracias por la ayuda ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Casting en un Hashable

Publicado por Edgar (278 intervenciones) el 23/03/2005 14:37:07
Hola

Bueno.. otra posible solucion es tratar de que todas esos objetos que agregas en el HastTable deriven de una clase base que contenga los metodos a los cuales puedes invocar, o que implementen una interfaz, ya que de ser asi, lo que haces es crear una variable de esa clase base o de la interfaz, y de alli puedes invocar los metodos sin ningun problema

Si esto no es posible, la solución debe ser Reflection, aunque el problema con Reflection es que de todas maneras tendrás que codificar bastanta porque para invocar un metodo debes codificar unas lineas extra, ademas de que debes saber q metodo invocar para cada caso

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar