Encontre mi proyecto de ejemplo
Si tienes esta clase (no importa que tenga propiedades, eventos, etc, se copia igual
Class Persona
Public Nombre as String
Public Apellido as String
End Class
Lo que haces es agregarle el atributo Serializable, y si quieres la interfaz IClonable que te agrega el metodo Clone (aunque no recuerdo porque no me funciono a mi, asi que implemente el metodo Clonar solo
No olvides de importar los espacios de nombres, son vitales para que funcione el codigo
Te quedaria asi
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.IO
<Serializable()> _
Class Persona
Public Nombre as String
Public Apellido as String
Public Function Clonar() As Persona
End Function
End Class
y en la funcion Clonar pones esto:
Dim clon As Persona ' Objeto donde se va a copiar por valor
' Serializadores, objeto en memoria
Dim formatter As IFormatter = New BinaryFormatter()
Dim str As Stream = New MemoryStream()
formatter.Serialize(str, Me) ' Copiamos a un stream en la memoria
str.Seek(0, SeekOrigin.Begin) ' Vamos al principio para volver a "leer"
clon = CType(formatter.Deserialize(str), Persona) ' Lo leemos y lo guardamos en el objeto "clonado"
Return clon
Por lo cual todo junto te quedaria asi:
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.IO
<Serializable()> _
Class Persona
Public Nombre as String
Public Apellido as String
Public Function Clonar() As Persona
Dim clon As Persona
Dim formatter As IFormatter = New BinaryFormatter()
Dim str As Stream = New MemoryStream()
formatter.Serialize(str, Me)
str.Seek(0, SeekOrigin.Begin)
clon = CType(formatter.Deserialize(str), Persona)
Return clon
End Function
End Class
Tal vez alguno diga que tenga un par de bugs o algo asi. Nose, a mi me funciono
jeje
Espero que te sirva!
Nota: La funcion Clonar esa sirve literalmente para cualquier cosa, se puede adaptar para clonar cualquier clase del net framework (el unico requisito es que sea serializable ovbio no?
)