Copiar un objeto..

02/09/2004 - 14:43 por Kravek | Informe spam
Como se puede copiar un objeto en otro?ojo, no quiero no asignar la misma
referencia sino crear un objeto nuevo COPIA del 1º, es el primer proyecto
serio que hago para winapplication y claro estos problemas con ASP son raros
(pues no sueles tener tantos objetos en memoria y los recargas por
página...)

Sí puede ser algún trozo de código que sólo deba escribir una vez mejor pues
ahora lo estoy haciendo inventandome un método copy pero claro esto es muy
trabajoso pues lo tengo que repetir y particularizar para cada objeto

Preguntas similare

Leer las respuestas

#1 Tristan
02/09/2004 - 16:17 | Informe spam
La forma que estás utilizando es la única. No hay ninguna forma de duplicar
objetos, ni en .net, ni en ningún entorno OO que conozca. Entre otras
razones, depende de las necesidades concretas cual debe ser el grado de
profundidad de copia. No habría ninguna forma genérica válida.

Por ejemplo, imagina que clonas un botón. ¿Cual sería el valor de la
propiedad Handle?. ¿El mismo?. Imposible, dos ventanas con el mismo handle
serían la misma. Habría muchas situaciones incoherentes como esta. Por eso
la implementación del duplicado de objetos la debe escribir el programador
de la clase.

De lo que dispones es de la interface ICloneable, que debes implementar en
objetos que necesitan poder ser clonados. Además, todos los objetos disponen
del método (protegido) MemberwiseClone, que realiza una copia superficial
del objeto.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Kravek
02/09/2004 - 17:35 | Informe spam
A que llamas copia superficial??

"Tristan" escribió en el mensaje
news:
La forma que estás utilizando es la única. No hay ninguna forma de


duplicar
objetos, ni en .net, ni en ningún entorno OO que conozca. Entre otras
razones, depende de las necesidades concretas cual debe ser el grado de
profundidad de copia. No habría ninguna forma genérica válida.

Por ejemplo, imagina que clonas un botón. ¿Cual sería el valor de la
propiedad Handle?. ¿El mismo?. Imposible, dos ventanas con el mismo handle
serían la misma. Habría muchas situaciones incoherentes como esta. Por eso
la implementación del duplicado de objetos la debe escribir el programador
de la clase.

De lo que dispones es de la interface ICloneable, que debes implementar en
objetos que necesitan poder ser clonados. Además, todos los objetos


disponen
del método (protegido) MemberwiseClone, que realiza una copia superficial
del objeto.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#3 Tristan
02/09/2004 - 18:57 | Informe spam
La verdad es que no podría describírtelo tan bien como la ayuda de
MemberwiseClone :-)

En la descripción del método tienes una ayuda completísima de lo que es una
copia superficial. Pero ojo!, es un método protegido. Solo podrá ser
invocado desde la clase de la instancia que se pretende copiar. Esto va en
la línea que te comenté. Está pensado para aytudar a implementar ICloneable
en cada clase.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Kravek
03/09/2004 - 00:07 | Informe spam
Efectivamente, la clave era buscarlo por el objeto object y no directamente
por el nombre del método:p

Conocerlo antes me habría ahorrado un poco de trabajo (bastante) de trabajo


"Tristan" escribió en el mensaje
news:
La verdad es que no podría describírtelo tan bien como la ayuda de
MemberwiseClone :-)

En la descripción del método tienes una ayuda completísima de lo que es


una
copia superficial. Pero ojo!, es un método protegido. Solo podrá ser
invocado desde la clase de la instancia que se pretende copiar. Esto va en
la línea que te comenté. Está pensado para aytudar a implementar


ICloneable
en cada clase.

Juan Carlos Badiola
MVP - C#


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