Como clonar objetos .net: implementando Iclonable

Si asignamos un objeto a otro usando el simbolo = lo que tenemos es dos variables apuntando a la misma instancia si cambiamos uno cambiamos el otro y si destruimos uno destruimos el otro, si lo que queremos es una copia del objeto el simbolo = no nos vale,

Algunos objetos  de .net como la clase  DataSet incorporan el metodo Clone() para hacer copias de objetos

Pero si queremos una funcionalidad similar en nuestros propios objetos tendremos que hacerlo a mano

¿Como? implementando la interfaz IClonable

Aqui teneis un ejemplo en Visual Basic si queremos hacerlo en C# simplemente hay que cambiar Implements por : (dos puntos)

Public Class CEmpleado

Implements ICloneable

 

'Declaramos las variables publicas en vez de usar propiedades por simplicidad

Public M_nombre

Public M_apellido

 

'Las funciones no necesitan clonarse

Public Function QuienSoy() As String

Return M_nombre & "" & M_apellido

End Function

 

Public Function Clone() As Object Implements System.ICloneable.Clone

'Creamos una instancia de mi mismo, es perfectamente posible

Dim EmpleadoClonado As New CEmpleado

 

'La copia tiene que ser miembro a miembro

EmpleadoClonado.M_nombre = Me.M_nombre

EmpleadoClonado.M_apellido = Me.M_apellido

 

'Devolvemos el objeto que acabamos de crear

Return EmpleadoClonado

End Function

End Class

 

 

Una vez hecho esto sólo tenemos que llamar al metodo Clone sobre la instancia de nuestro objeto de tipo Cempleado

Para más información sobre los interfaces podeis echar un ojo a esta página:

http://www.devjoker.com/asp/ver_contenidos.aspx?co_contenido=165

Pablo  Gumpert  Fernandez (aldeamedia)
Como clonar objetos .net implementando Iclonable
Pablo Gumpert Fernandez (aldeamedia)

Pablo Gumpert es formador y consultor oficial de Microsoft para .NET y SQL server.Lleva desarrollando desde hace más de diez años y durante ese tiempo ha trabajado como programador de videojuegos ,analista informático, experto en seguridad, DBA ... Actualmente se dedica sobre todo a la formación. Su especialidad es la programación en .NET aunque también es experto en MSSQL Server y en el año 2002 fundó su propia empresa colaboradora de diversos centros partner Microsoft.
Fecha de alta:21/01/2007
Última actualizacion:21/01/2007
Visitas totales:12915
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com