Algo de fundamentos teóricos

25/10/2008 - 14:24 por Hugo Nugra | Informe spam
Amigos.

Tengo dos objetos de una misma clase: ObjA y ObjB.

Existe una serie de otros objetos que "apuntan" a ObjA, ineractúan con sus
propiedades y ejecutan sus métodos. Sucede que por alguna razón, necesito
que todo lo que apunta a ObjA, ahora apunte aObjB.

Si intento con

ObjA = ObjB

todas las referencias que existían hacia ObjA, ahora apuntan a un null
(nulo), con los consabidos inconvenientes.

Si en concepto ObjA y ObjB son solamente referencias a una dirección de
memoria, quisiera saber si existe alguna manera de decirle al programa que
ahora la dirección de memoria de ObjA es la dirección de memoria de ObjB.

Este requerimirnto se pone de manifiesto cuando se instancian formularios
que han sido creados utilizando el diseñador de visual estudio, utilizando un
objeto de tipo DataSet; pues el generador de código crea una instancia del
tipo DataSet y DataBindings que lo apuntan en cada campo de datos. El
problema aparece cuando se necesita presentar el formulario pero con un
DataSet que ya existe y que ya está poblado de datos. Vendría bien una
solución como la que he planteado anteriormente.

Por cierto, yo he solucionado el problema de la presentación del formulario,
pero no de la manera que me gustaría.

Si alguien tiene algún cometario a respecto, de antemano, ¡Gracias!.

Preguntas similare

Leer las respuestas

#11 Pedro
26/10/2008 - 17:03 | Informe spam

public void PresentarDatos(MiDataSet otrosDatos)
{
// En este punto me gustaría saber si puedo hacer
// que todo lo que hacía referencia a miDataSet,
// ahora hiciera referencia a otrosDatos.
}
}





No estoy seguro pero lo unico que podría decirte es que pruebes poniendo
"ref" (por referencia). A veces hasta las referencias hay que pasarlas
por referencia :)


public void PresentarDatos(ref MiDataSet otrosDatos)

y al llamarlo

elDataset=new MiDataSet();

PresentarDatos(ref elDataset);
Respuesta Responder a este mensaje
#12 Alfredo Novoa
27/10/2008 - 02:21 | Informe spam
Hola Hugo,

El Sun, 26 Oct 2008 06:04:00 -0700, Hugo Nugra escribió:

Suena muy fácil. Pero en la realidad, todos los objetos DataBinding que
(discúlame si no uso el término correcto) "apuntaban" a ObjA, dejan de
existir.



Sigues sin entenderlo, ningún objeto apuntaba a ObjA, era ObjA el que
apuntaba a un objeto (variable).

Si haces ObjA = ObjB entonces ObjA pasa a apuntar a otra variable, pero
todos los demás punteros siguen apuntando al mismo sitio que antes.

Lo normal sería que al hacer ese cambio los databindings no se enterasen y
siguiesen como estaban.

Para hacer lo que quieres necesitas una variable intermedia que te sirva de
puente como te expliqué antes, y la clase BindingSource sirve justo para
eso.



Saludos
Respuesta Responder a este mensaje
#13 Hugo Nugra
27/10/2008 - 22:19 | Informe spam
Gracias Alfredo

Voy a profundizar en lo que tu me has expueto.
Respuesta Responder a este mensaje
#14 Hugo Nugra
27/10/2008 - 22:36 | Informe spam
Gracias Pedro.

Uno de los inconvenientes con que me encuentro es que código que se genera
con VisualEstudio, instancia la clase DataSet, y todos los objetos Binding
apuntan a esta instancia.

Voy a seguir peleándole el tema.
Respuesta Responder a este mensaje
#15 Hugo Nugra
27/10/2008 - 22:37 | Informe spam
Gracias Juan Diego

Tengo nuevos elementos para hacer mis experimentos.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida