Como clonar objetos VB.net: implementando Iclonable
Si asignamos un objeto a otro usando el símbolo = 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 símbolo = 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
Aquí 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