Serialización y deserialización en C# con ejemplo
Serialización y deserialización en C#
El concepto de serialización y deserialización se utiliza siempre que es necesario enviar datos pertenecientes a objetos 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 utiliza 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 clase C# se escriben o serializan en archivos. Digamos que tienes 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 construir el objeto Tutorial nuevamente.
Cómo serializar un objeto en C#
Veamos un ejemplo de cómo podemos lograrlo.
En nuestro ejemplo, realizaremos los siguientes pasos de alto nivel en el código.
- Cree una clase llamada Tutorial que tenga 2 propiedades, a saber, ID y Nombre.
- 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 nombre.
- Luego usaremos la serialización para serializar el objeto anterior en un archivo llamado Ejemplo.txt.
- 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) Agrega la clase.
El primer paso es agregar la clase que se utilizará para la serialización.
Explicación del código: -
- La clase que debe serializarse debe tener el atributo [Serializable]. Esta es una palabra clave en C#. Luego, esta palabra clave se adjunta a la clase Tutorial. Si no menciona este atributo, obtendrá un error cuando intente serializar la clase.
- Lo siguiente es la definición de la clase que se serializará. Aquí definimos una clase llamada "Tutorial" y proporcionamos 2 propiedades, una es "ID" y la otra es "Nombre".
Paso 2) Crea el objeto.
En este paso, primero crearemos el objeto de la clase Tutorial y lo serializaremos en el archivo llamado Ejemplo.txt.
Explicación del código: -
- Primero, creamos un objeto de la clase Tutorial. Luego asignamos el valor de "1" a ID y ".net" a la propiedad de nombre.
- 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 Ejemplo.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.
- Finalmente, utilizamos el método Serialize para transferir los datos binarios al archivo. Luego cerramos la transmisión, ya que la escritura Inteligente Esta completo.
Paso 3) Utilice la deserialización.
Finalmente, para asegurarnos de que los datos estén presentes en el archivo, utilizamos 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: -
- Creamos el objeto “stream”para abrir el archivo Ejemplo.txt en modo de solo lectura.
- Luego usamos la clase de formateador que se usa para deserializar el objeto, que se almacena en el archivo Ejemplo.txt. El objeto devuelto se establece en el objeto objnew.
- Finalmente, mostramos las propiedades del objeto "objnew" en la consola usando las propiedades "ID" y "nombre".
Cuando se configura el código anterior y el proyecto se ejecuta usando Visual Studio, obtendrá el siguiente resultado.
Salida:-
Puede ver en el resultado anterior que los valores del archivo se deserializaron correctamente y se mostraron en la consola.
Resum
La serialización se utiliza para escribir objetos de clase en archivos.
La deserialización se utiliza para recuperar los objetos del archivo.