Copia de un control a otro

15/06/2006 - 13:20 por Javier Garcia | Informe spam
Buenas, tengo un objeto Control que quiero copiarlo a otro, que este tome
todos sus valores, propiedades, etc, pero sea otro objeto, de forma que los
cambios que haga en uno no se reflejen al otro

es decir (en codigo)
Control original = new Control();

Control control = new Control();

control = original

control.Name = "oeoeoeooeoe";

Y cuando agrego una inspeccion a original tb le cambia la propiedad name. Y
eso es lo que quiero evitar, que los cambios de un control solo salpiquen a
un control, pero que copie todo el estado del otro

Preguntas similare

Leer las respuestas

#1 Jose Escrich
15/06/2006 - 19:08 | Informe spam
Hola Javier,

Para cualquier objeto puedes aplicar ICloneable esta parte de System, alli
tienes las signatures adecuadas para implementar la copia de un objeto con
las mismas caracteristicas, es decir los valores de sus propiedades y demas.
Ten en cuenta que al implementar el metodo Clone (miembro de la interfaz
ICloneable) deberas tener cuidado de hacer un clone tambien de las referencias
que tenga internamente (o no segun el caso de uso que tengas) es lo que se
llama deep copy o not deep copy.

Control (Windows Form) no implementa ICloneable, deberas hacer tu propia
implementacion.

msdn: http://msdn2.microsoft.com/es-es/li...eable.aspx

saludos, espero te sirva.

Jose Escrich
mailto: jescrich -a- gmail.com
http://latincoder.com

JG> Buenas, tengo un objeto Control que quiero copiarlo a otro, que este
JG> tome todos sus valores, propiedades, etc, pero sea otro objeto, de
JG> forma que los cambios que haga en uno no se reflejen al otro
JG>
JG> es decir (en codigo)
JG> Control original = new Control();
JG> Control control = new Control();
JG>
JG> control = original
JG>
JG> control.Name = "oeoeoeooeoe";
JG>
JG> Y cuando agrego una inspeccion a original tb le cambia la propiedad
JG> name. Y eso es lo que quiero evitar, que los cambios de un control
JG> solo salpiquen a un control, pero que copie todo el estado del otro
JG>
Respuesta Responder a este mensaje
#2 Javier Garcia
16/06/2006 - 08:15 | Informe spam
Gracias por tu ayuda, segun pones la unica forma de conseguir lo que deseo
es hacer clases nuevas para cada control y que implemente la interfaz
icloneable, no??

¿Y no hay ninguna forma de que lo haga sin implementar clases propias?, es
que estoy haciendo un control que debe de ser lo mas generico posible, y si
ya acoto a que solo puedo usar controles propios.

Lo dicho, muchas gracias.

"Jose Escrich" escribió en el mensaje
news:
Hola Javier,

Para cualquier objeto puedes aplicar ICloneable esta parte de System, alli
tienes las signatures adecuadas para implementar la copia de un objeto con
las mismas caracteristicas, es decir los valores de sus propiedades y
demas. Ten en cuenta que al implementar el metodo Clone (miembro de la
interfaz ICloneable) deberas tener cuidado de hacer un clone tambien de
las referencias que tenga internamente (o no segun el caso de uso que
tengas) es lo que se llama deep copy o not deep copy.

Control (Windows Form) no implementa ICloneable, deberas hacer tu propia
implementacion.

msdn: http://msdn2.microsoft.com/es-es/li...eable.aspx

saludos, espero te sirva.

Jose Escrich
mailto: jescrich -a- gmail.com
http://latincoder.com

JG> Buenas, tengo un objeto Control que quiero copiarlo a otro, que este
JG> tome todos sus valores, propiedades, etc, pero sea otro objeto, de
JG> forma que los cambios que haga en uno no se reflejen al otro
JG> JG> es decir (en codigo)
JG> Control original = new Control();
JG> Control control = new Control();
JG> JG> control = original
JG> JG> control.Name = "oeoeoeooeoe";
JG> JG> Y cuando agrego una inspeccion a original tb le cambia la
propiedad
JG> name. Y eso es lo que quiero evitar, que los cambios de un control
JG> solo salpiquen a un control, pero que copie todo el estado del otro
JG>

Respuesta Responder a este mensaje
#3 jescrich
16/06/2006 - 16:03 | Informe spam
Podrias llegar a construirte un Clonador generico, pero de todas formas
se te complicara en saber "como" clonar cualquier objeto que tengas
dentro del que estas clonando, ahi tendras que tomar la decision de que
tan profunda haces la copia. Esto es si mantienes las referencias o
haces una copia. Lo mas adecuado es que implementes la interfaz.

saludos,
Jose Escrich
mailto: jescrich -a- gmail.com
http://latincoder.com


Javier Garcia wrote:
Gracias por tu ayuda, segun pones la unica forma de conseguir lo que deseo
es hacer clases nuevas para cada control y que implemente la interfaz
icloneable, no??

¿Y no hay ninguna forma de que lo haga sin implementar clases propias?, es
que estoy haciendo un control que debe de ser lo mas generico posible, y si
ya acoto a que solo puedo usar controles propios.

Lo dicho, muchas gracias.

"Jose Escrich" escribió en el mensaje
news:
> Hola Javier,
>
> Para cualquier objeto puedes aplicar ICloneable esta parte de System, alli
> tienes las signatures adecuadas para implementar la copia de un objeto con
> las mismas caracteristicas, es decir los valores de sus propiedades y
> demas. Ten en cuenta que al implementar el metodo Clone (miembro de la
> interfaz ICloneable) deberas tener cuidado de hacer un clone tambien de
> las referencias que tenga internamente (o no segun el caso de uso que
> tengas) es lo que se llama deep copy o not deep copy.
>
> Control (Windows Form) no implementa ICloneable, deberas hacer tu propia
> implementacion.
>
> msdn: http://msdn2.microsoft.com/es-es/li...eable.aspx
>
> saludos, espero te sirva.
>
> Jose Escrich
> mailto: jescrich -a- gmail.com
> http://latincoder.com
>
> JG> Buenas, tengo un objeto Control que quiero copiarlo a otro, que este
> JG> tome todos sus valores, propiedades, etc, pero sea otro objeto, de
> JG> forma que los cambios que haga en uno no se reflejen al otro
> JG> JG> es decir (en codigo)
> JG> Control original = new Control();
> JG> Control control = new Control();
> JG> JG> control = original
> JG> JG> control.Name = "oeoeoeooeoe";
> JG> JG> Y cuando agrego una inspeccion a original tb le cambia la
> propiedad
> JG> name. Y eso es lo que quiero evitar, que los cambios de un control
> JG> solo salpiquen a un control, pero que copie todo el estado del otro
> JG>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida