La serialización binaria es muy eficiente, pero recomendado cuando el objeto serializado va a ser des-serializados solo en aplicaciones dot.net. Serialicemos un objeto en un archivo para su posterior recuperación:
Imports System.IO Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Formatters
Module Module1
<System.Serializable()> Public Class Persona Public Nombre As String Public Apellido As String Public Edad As Integer End Class
Sub Main() Dim Manuel As New Persona() Manuel.Apellido = "Salas" Manuel.Nombre = "Manuel" Manuel.Edad = 30 Dim archivo As New FileStream("c:\temp\f_persona.dat", FileMode.Create) Dim formateador As New Binary.BinaryFormatter formateador.Serialize(archivo, Manuel) archivo.Close() End Sub
End Module |
Como podemos observar básicamente son tres pasos los que debemos realizar para serializar un objeto:
- Instanciamos un FileStream para almacenar el objeto serializado.
- Instanciamos un Formateador para serializar el objeto.
- Serializamos el objeto llamando al método serialize del formateador.
Para des-serializar un objeto seguimos los mismos pasos de manera inversa:
- Instanciamos un FileStream para leer el objeto serializado.
- Instanciamos un Formateador para des-serializar el objeto.
- Des-serializamos el objeto llamando al método deserialize del formateador.
Veamos como des-serializar el objeto que serializamos en el fragmento de código anterior:
Imports System.IO Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Formatters
Module Module1
<System.Serializable()> Public Class Persona Public Nombre As String Public Apellido As String Public Edad As Integer End Class
Sub Main() Dim Manuel As New Persona() Dim archivo As New FileStream("c:\temp\f_persona.dat", FileMode.Open) Dim formateador As New Binary.BinaryFormatter Manuel = formateador.Deserialize(archivo) archivo.Close() Console.WriteLine("Nombre ={0}, Apellido = {1}, Edad = {2}", Manuel.Nombre, Manuel.Apellido, Manuel.Edad) Console.ReadKey() End Sub
End Module |
Como podemos observar en el ejemplo anterior, cuando creamos una clase personalizada y queremos serializarla debemos marcarla con el atributo <System.Serializable()>. También podemos seleccionar las propiedades que no queremos serializar, para esto utilizamos el atributo <System.NonSerialized()> antes del nombre de la propiedad que deseamos no serializar.
No hay comentarios.:
Publicar un comentario