Convertir Objeto a DataSet

16/06/2005 - 23:15 por Kevin Guisbert S. | Informe spam
Hola a todos, quisiera que alguien por favor me ayude, tengo el siguiente
problema, bueno para tener buenas costumbres de programacion en VB.NET estoy
usando Option Strict On y ahora con esta opcion no puedo realizar conversion
de tipos no explicita ahora no se como convertir un objeto a DataSet, tengo
lo siguiente
Dim objDS as DataSet

objDS = Context.Cache("tablacache")

y aqui es donde me da el error, como puedo hacer la conversion??? la unica
solucion que vi es crear una funcion y luego ir llenando uno por uno el
dataSet con el contenido que tengo en Cache :( no creo que esa sea la
solucion por eso es que me encuentro preguntando aqui

Muchas gracias de antemano

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
17/06/2005 - 01:09 | Informe spam
Hay dos formas de hacer la conversion, con CType y con DirectCast. La
diferencia es que DirectCast convierte solo si el objeto es del tipo (o
implementa la interface) al que se quiere convertir mientras que CType puede
resultar en una conversion de tipos. Por ejemplo:

Dim obj As Object = 1 ' obj contiene un entero
Dim str As String = CType(obj, String) ' Valido, CType convierte a
String
Dim entero As Integer = CType(obj, Integer) ' Valido, CType hace un cast a
Integer
Dim str1 As String = DirectCast(obj, String) ' Error, obj no contiene un
String
Dim entero1 As Integer = DirectCast(obj, Integer) ' Valido, obj contiene un
Integer

Esto en cuanto a los tipos simples. Hablando de objetos, los dos actuan de
la misma forma.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Kike
17/06/2005 - 08:55 | Informe spam
Hola Eduardo

Respecto a lo que has puesto cual podria ser un ejemplo para utilizar el
DirectCast, es decir, que no veo muy clara la utilidad del DirectCast.

Gracias.
Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
17/06/2005 - 16:24 | Informe spam
Respecto a lo que has puesto cual podria ser un ejemplo para utilizar
el DirectCast, es decir, que no veo muy clara la utilidad del
DirectCast.



DirectCast es mas rapido que CType en los casos donde lo que este guardado
en la variable tipo Object sea del tipo al que se quiere convertir. Por
ejemplo en el siguiente caso seria preferible DirectCast por ser mas
eficiente:

Dim obj As Object = "Hola"
Dim str1 As String = CType(obj, String)
Dim str2 As String = DirectCast(obj, String)

Como decia en el mensaje anterior, esto se aplica a los tipos del lenguaje,
cuando hablamos de clases los dos son iguales. Es decir si tienes esto:

Dim obj As Object = New MiClase()
Dim obj1 As MiClase = CType(obj, MiClase)
Dim obj2 As MiClase = DirectCast(obj, MiClase)

No hay diferencia entre cual usas.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Kevin Guisbert S.
17/06/2005 - 20:05 | Informe spam
Muchas gracias por tu ayuda, ahora mismo lo implementare

Salu2

"Eduardo A. Morcillo [MS MVP VB]" wrote:

> Respecto a lo que has puesto cual podria ser un ejemplo para utilizar
> el DirectCast, es decir, que no veo muy clara la utilidad del
> DirectCast.

DirectCast es mas rapido que CType en los casos donde lo que este guardado
en la variable tipo Object sea del tipo al que se quiere convertir. Por
ejemplo en el siguiente caso seria preferible DirectCast por ser mas
eficiente:

Dim obj As Object = "Hola"
Dim str1 As String = CType(obj, String)
Dim str2 As String = DirectCast(obj, String)

Como decia en el mensaje anterior, esto se aplica a los tipos del lenguaje,
cuando hablamos de clases los dos son iguales. Es decir si tienes esto:

Dim obj As Object = New MiClase()
Dim obj1 As MiClase = CType(obj, MiClase)
Dim obj2 As MiClase = DirectCast(obj, MiClase)

No hay diferencia entre cual usas.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo



Respuesta Responder a este mensaje
#5 Tristan
18/06/2005 - 11:04 | Informe spam
No entiendo a que te refieres Eduardo con:

Como decia en el mensaje anterior, esto se aplica a los tipos del
lenguaje, cuando hablamos de clases los dos son iguales. Es decir si
tienes esto:

Dim obj As Object = New MiClase()
Dim obj1 As MiClase = CType(obj, MiClase)
Dim obj2 As MiClase = DirectCast(obj, MiClase)

No hay diferencia entre cual usas.



Que yo sepa, siempre es más eficiente DirectCast. Al menos es lo que
entiendo por la ayuda de DirectCast:

"No obstante, si el tipo especificado y el tipo de tiempo de ejecución de la
expresión son los mismos, el rendimiento en tiempo de ejecución de
DirectCast es mejor que el de CType."

Entiendo que CType tiene que hacer una comprobación de tipos, buscar si
existe un conversor para el tipo del objeto en tiempo de ejecución, etc...
¿O crees que no es así?

Lo que me sorprende, es que en casi todos los ejemplos de Microsoft en los
que se necesita downcasting, utilizan CType en lugar de DirectCast. O bien,
el que los ha escrito no conoce, o da importancia a ese detalle de
eficiencia, o la documentación está mal escrita, o yo la estoy interpretando
mal.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida