Encapsulamiento de datarows

13/04/2006 - 23:09 por msnews.com | Informe spam
Hola a todos
Tengo una aplicacion OO que utiliza typed dataset para almacenar las
entidades, pero me gustaria encapsularlas en clases para que no se viera que
son datasets y lo primero que se me ocurrio fue heredar un typed datarow,
pero al momento de querer asignar la instancia hacia mi clase, me marca
error "System.InvalidCastException"
Return DirectCast(drCliente, Cliente)

Existe alguna manera facil de encapsular la informacion sin tener que hacer
mucho retrabajo a mano?

Me estoy complicando las cosas y me recomendarian dejar las entidades como
typed datarows?

Si hago esto ultimo, como asignarle comportamiento especifico a las
entidades? Se puede heredar en especializaciones? Como agregar un campo que
sea de un tipo definido en el sistema?

Saludos y gracias de antemano.
 

Leer las respuestas

#1 Leonardo Azpurua
16/04/2006 - 06:48 | Informe spam
"msnews.com" escribió en el mensaje
news:
Hola a todos
Tengo una aplicacion OO que utiliza typed dataset para almacenar las
entidades, pero me gustaria encapsularlas en clases para que no se viera
que son datasets y lo primero que se me ocurrio fue heredar un typed
datarow, pero al momento de querer asignar la instancia hacia mi clase, me
marca error "System.InvalidCastException"
Return DirectCast(drCliente, Cliente)

Existe alguna manera facil de encapsular la informacion sin tener que
hacer mucho retrabajo a mano?

Me estoy complicando las cosas y me recomendarian dejar las entidades como
typed datarows?

Si hago esto ultimo, como asignarle comportamiento especifico a las
entidades? Se puede heredar en especializaciones? Como agregar un campo
que sea de un tipo definido en el sistema?



Hola, "mvazlop"

Cuando dices "encapsular un datarow" describes exactamente un método
bastante comun y eficaz.

Pero la herencia no es la manera correcta de encapsular. La herencia se
utiliza para obtener un objeto especializado a partir de un objeto más
general. Y un cliente no *es* un data row: de ahi tus inconvenientes.

Dentro de la implementacion de la clase Cliente puedes utilizar un datarow
para contener los datos que describen sus atributos y estados en un momento
dado, tal vez como una variable privada, a cuyas columnas accedes mediante
propiedades.

Desafortunadamente, este metodo requiere de un esfuerzo considerable de
escritura. La parte buena es que esta tarea de escritura es tan facil que la
tarea de generar automaticamente el codigo a partir de las definiciones es
casi trivial (tan facil como una tarea de primer semestre). Hace poco habia
una herramienta gratuita llamda CodeSmith, que te permite generar codigo a
partir de plantillas definidas en un lenguaje tipo ASP. Es decir, todavia
existe, pero ya no es gratis.

Mira el hilo titulado "Problemas con ua Clase Heredada", del 23 de marzo, en
el que se discute una inquietud parecida a la tuya.

Salud!

Preguntas similares