Serialización de C # & Deserialización con ejemplo

Anonim

El concepto de serialización y deserialización se utiliza siempre que los datos pertenecientes a objetos deben enviarse de una aplicación a otra. La serialización se utiliza para exportar datos de la aplicación a un archivo. Luego, la aplicación de destino usa la deserialización para extraer los datos de la aplicación para su uso posterior.

La serialización es un concepto en el que los objetos de la clase C # se escriben o serializan en archivos. Supongamos que tiene una clase de C # llamada Tutorial. Y la clase tiene 2 propiedades de ID y nombre de tutoriales.

La serialización se puede utilizar para escribir directamente las propiedades de datos de la clase Tutorial en un archivo. La deserialización se utiliza para leer los datos del archivo y volver a construir el objeto Tutorial.

Veamos un ejemplo de cómo podemos lograrlo.

En nuestro ejemplo, vamos a realizar los siguientes pasos de alto nivel en el código.

  1. Cree una clase llamada Tutorial que tiene 2 propiedades, a saber, ID y Nombre
  2. Luego crearemos un objeto a partir de la clase y asignaremos un valor de "1" a la propiedad ID y un valor de ".Net" a la propiedad name.
  3. Luego usaremos la serialización para serializar el objeto anterior en un archivo llamado Example.txt
  4. Finalmente, usaremos la deserialización para deserializar el objeto del archivo y mostrar los valores en la consola.

Ingrese el siguiente código en el archivo program.cs de la aplicación de consola.

Paso 1) El primer paso es agregar la clase que se utilizará para la serialización

Explicación del código: -

  1. La clase que necesita ser serializada debe tener el atributo [Serializable]. Esta es una palabra clave en C #. Esta palabra clave se adjunta luego a la clase Tutorial. Si no menciona este atributo, obtendrá un error cuando intente serializar la clase.
  2. A continuación está la definición de la clase que se serializará. Aquí estamos definiendo una clase llamada "Tutorial" y proporcionando 2 propiedades, una es "ID" y la otra es "Nombre".

Paso 2) En este paso, primero crearemos el objeto de la clase Tutorial y lo serializaremos en el archivo llamado Example.txt

Explicación del código: -

  1. Primero, creamos un objeto de la clase Tutorial. Luego asignamos el valor de "1" a ID y ".net" a la propiedad del nombre.
  2. Luego usamos la clase de formateador que se usa para serializar o convertir el objeto a un formato binario. Los datos del archivo en serialización se realizan en formato binario. A continuación, creamos un objeto de flujo de archivos. El objeto de flujo de archivos se utiliza para abrir el archivo Example.txt con fines de escritura. Las palabras clave FileMode.Create y FileMode.Write se utilizan para mencionar específicamente que el archivo debe abrirse con fines de escritura.
  3. Finalmente, usamos el método Serialize para transferir los datos binarios al archivo. Luego cerramos el flujo, ya que la operación de escritura está completa.

Paso 3) Finalmente, para asegurarnos de que los datos estén presentes en el archivo, usamos la deserialización para deserializar el objeto del archivo.

using System;using System.IO;using System.Linq;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Text;using System.Threading.Tasks;namespace DemoApplication{[Serializable]class Tutorial{public int ID;public String Name;static void Main(string[] args){Tutorial obj = new Tutorial();obj.ID = 1;obj.Name = ".Net";IFormatter formatter = new BinaryFormatter();Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);formatter.Serialize(stream, obj);stream.Close();stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);Tutorial objnew = (Tutorial)formatter.Deserialize(stream);Console.WriteLine(objnew.ID);Console.WriteLine(objnew.Name);Console.ReadKey();}}}

Explicación del código: -

  1. Creamos el objeto "stream" para abrir el archivo Example.txt en modo de solo lectura.
  2. Luego usamos la clase de formateador que se usa para deserializar el objeto, que se almacena en el archivo Example.txt. El objeto devuelto se establece en el objeto objnew.
  3. Finalmente, mostramos las propiedades del objeto "objnew" en la consola usando las propiedades "ID" y "name".

Cuando se establece el código anterior y el proyecto se ejecuta con Visual Studio, obtendrá el siguiente resultado.

Producción:-

Puede ver en el resultado anterior que los valores del archivo se deserializaron correctamente y se mostraron en la consola.

Resumen

La serialización se utiliza para escribir objetos de clase en archivos.

La deserialización se utiliza para recuperar los objetos del archivo.