Está en la página 1de 2

.

net serialization c#
Hola comunidad quiero compartir un post de mi blog

Public Bytes en donde explico que es la serializacion en .net y se muestra el codigo


para realizar serializacion binaria

El proceso de serializacion consiste en almacenar una instancia de una clase en un


archivo de manera tal que pueda volver a crearse el objeto con sus mismas
propiedades cargándolo desde el mismo archivo; es decir si tienes un objeto creado en
memoria el cual representa a un automóvil y deseas almacenar el objeto completo
para luego volver a hacer referencia a él en otro momento, entonces deberías utilizar
serializacion.
Vamos a ver como funciona el proceso de serializacion en .Net
Para nuestro estudio vamos a suponer que tenemos una clase llamada Persona la cual
tiene como propiedades el Nombre, el apellido y la Cedula(Numero único de
identificación) de la persona.
Para poder serializar una clase esta debe estar marcada con el atributo [Serializable]

[Serializable]
class Persona
{
public string _Nombre;
public string _Apellido;
public string _Cedula;

El siguiente paso consiste en elegir el tipo de serializador que necesitamos teniendo


dentro de nuestras opciones el serializador binario, el serializador xml y otros
soportados por el espacio de nombres System.Runtime.Serialization.

Serializador Binario:

Persona nuevaPersona = new Persona();


nuevaPersona._Nombre = "Carlos Andres";
nuevaPersona._Apellido = "Arango Morales";
nuevaPersona._Cedula = "xxx xxx xxx";

//Se crea una instancia del formateador binario que implementa la interfaz IFormater
IFormatter Formatter = new BinaryFormatter();

//Cramos un Stream para almacenar el archivo en el disco


Stream stream = new FileStream("PersonaSerializada.bin", FileMode.Create,
FileAccess.Write, FileShare.None);

//Utilizamos el Formatter para serializar el objeto en el stream


Formatter.Serialize(stream, nuevaPersona);
stream.Close();

De esta forma tendríamos en la carpeta de la aplicación un nuevo archivo llamado


PersonaSerializada.bin con caracteres no fácilmente comprensibles por los humanos
pero en el cual esta almacenado el objeto.

Deserializador Binario:

Si deseamos leer el objeto desde el archivo entonces debemos leer el archivo


utilizando un Stream Reader para luego por medio del Formatter realizar un Cast al
tipo de objeto a los datos retornados por el Formatter.

IFormatter Formatter2 = new BinaryFormatter();


Stream stream2 = new FileStream("PersonaSerializada.bin", FileMode.Open,
FileAccess.Read, FileShare.Read);

//Esta es la parte importante


//Despues de tener el objeto en el stream creamos el objeto declarando el contenedor
y realizando
//un Cast del contenido del stream a la clase que deseamos deserializar

Persona PersonaDesSerializada = (Persona) Formatter2.Deserialize(stream2);

Ahora tenemos en memoria en el objeto PersonaDesSerializada el contenido del objeto


persona creado inicialmente.

Existen varios de tipos de serializadores los cuales son importantes y mas efectivos en
algunos casos pero el proceso es muy similar al que vimos en este apartado del blog.

También podría gustarte