PARA ESPERTOS: cast de un object usando la Reflection

20/08/2004 - 11:37 por Alejandro J. Gonzalez | Informe spam
Hola!

Lo que trato de esplicar no es simple!

Con el codigo obtengo la siguientes variables:
- Type theType : puede contener System.String, System.Int32,
System.DateTime.
- Object objA e objB: contienen datos de tipo theType.
- string operator: puede contener "=", "!=", ">", etc.

Tengo que confrontar los dos object, pero el siguiente codigo no es corecto:

switch (operator)
case (">"):
if ((theType)objA > (theType)objB)
return true;
...

Alguien sabe come resolver mi problema?
Creo que se pueda hacer algo con la reflection...

Thanks

Alejandro

Preguntas similare

Leer las respuestas

#1 A.Poblacion
20/08/2004 - 17:07 | Informe spam
Se me ocurre esto:

if (((IComparable)objA).CompareTo(objB) > 0) return true;

Con otros operadores, cambia el ">0" por "==0", "!=0" o "<0".

Esto funciona con cualquier tipo de variable que implemente el interface
IComparable, entre ellos los tres tipos que has mencionado. De paso, con
este método, te evitas tener que pasar el parámetro "theType".


"Alejandro J. Gonzalez" wrote in
message news:
Hola!

Lo que trato de esplicar no es simple!

Con el codigo obtengo la siguientes variables:
- Type theType : puede contener System.String, System.Int32,
System.DateTime.
- Object objA e objB: contienen datos de tipo theType.
- string operator: puede contener "=", "!=", ">", etc.

Tengo que confrontar los dos object, pero el siguiente codigo no es


corecto:

switch (operator)
case (">"):
if ((theType)objA > (theType)objB)
return true;
...

Alguien sabe come resolver mi problema?
Creo que se pueda hacer algo con la reflection...

Thanks

Alejandro


Respuesta Responder a este mensaje
#2 Alejandro J. Gonzalez
23/08/2004 - 09:40 | Informe spam
Thanks!!!!
Perfecto, justo lo que me servia!

"A.Poblacion" ha scritto
nel messaggio news:
Se me ocurre esto:

if (((IComparable)objA).CompareTo(objB) > 0) return true;

Con otros operadores, cambia el ">0" por "==0", "!=0" o "<0".

Esto funciona con cualquier tipo de variable que implemente el interface
IComparable, entre ellos los tres tipos que has mencionado. De paso, con
este método, te evitas tener que pasar el parámetro "theType".


"Alejandro J. Gonzalez" wrote


in
message news:
> Hola!
>
> Lo que trato de esplicar no es simple!
>
> Con el codigo obtengo la siguientes variables:
> - Type theType : puede contener System.String, System.Int32,
> System.DateTime.
> - Object objA e objB: contienen datos de tipo theType.
> - string operator: puede contener "=", "!=", ">", etc.
>
> Tengo que confrontar los dos object, pero el siguiente codigo no es
corecto:
>
> switch (operator)
> case (">"):
> if ((theType)objA > (theType)objB)
> return true;
> ...
>
> Alguien sabe come resolver mi problema?
> Creo que se pueda hacer algo con la reflection...
>
> Thanks
>
> Alejandro
>
>


Respuesta Responder a este mensaje
#3 Antonio Andrés Avila Moreno
25/08/2004 - 02:16 | Informe spam
Alejandro,
No se bien que es lo que tratas de hacer, pero supongo que quieren
interoperar entre dos tipos de objetos, como sumar, restar, comparar, etc..
Si es asi, lo mejor que puedes hacer es sobrecargar los operadores que
requieras con el objeto base. Si no es lo que requieres trata de explicar en
terminos generales, lo que requieres hacer aun sin entrar en detalle.

Saludos desde Mexico ...



"Alejandro J. Gonzalez" escribió
en el mensaje news:
Hola!

Lo que trato de esplicar no es simple!

Con el codigo obtengo la siguientes variables:
- Type theType : puede contener System.String, System.Int32,
System.DateTime.
- Object objA e objB: contienen datos de tipo theType.
- string operator: puede contener "=", "!=", ">", etc.

Tengo que confrontar los dos object, pero el siguiente codigo no es


corecto:

switch (operator)
case (">"):
if ((theType)objA > (theType)objB)
return true;
...

Alguien sabe come resolver mi problema?
Creo que se pueda hacer algo con la reflection...

Thanks

Alejandro


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida