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 los datos pertenecientes a los objetos deben enviarse de una aplicación a otra. La serialización se utiliza para exportar datos de aplicaciones a un archivo. La aplicación de destino luego 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. Digamos que tenía 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.
Cómo serializar un objeto en C#
Veamos un ejemplo de cómo podemos lograr esto.
En nuestro ejemplo, vamos a realizar los siguientes pasos de alto nivel en el código
- Cree una clase llamada Tutorial que tenga 2 propiedades, a saber, ID y Nombre
- Entonces crearemos un objeto de la clase y asignaremos un valor de "1" a la propiedad ID y un valor de ".Net" a la propiedad de 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.
Introduzca el siguiente código en el archivo program.cs de la aplicación de consola.
Paso 1) Agregue la clase.
El primer paso es agregar la clase que se usará 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#. Esta palabra clave luego 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í estamos definiendo una clase llamada "Tutorial" y proporcionando 2 propiedades, una es "ID" y la otra es "Nombre".
Paso 2) Cree 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 en el archivo en serialización se realizan en formato binario. A continuación, creamos un objeto de flujo de archivos. El objeto de secuencia 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 para fines de escritura.
- Finalmente, usamos el método Serialize para transferir los datos binarios al archivo. Luego cerramos la transmisión, ya que la operación de escritura está completa.
Paso 3) Utilice la deserialización.
Por último, para garantizar 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 Example.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 Example.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 "name".
Cuando se configura el código anterior y el proyecto se ejecuta con 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.
Resumen
La serialización se utiliza para escribir objetos de clase en archivos.
La deserialización se utiliza para recuperar los objetos del archivo.
Lenguaje C
- Clase y objeto de C#
- Clase y método abstractos de C#
- C# Clase parcial y método parcial
- Clase y método sellados de C#
- Clase de archivo Java
- Operadores en C++ con Ejemplo:Qué es, Tipos y Programas
- Clase y objeto C++ con ejemplo
- Diferencia entre estructura y clase:explicada con el ejemplo de C++
- Tutorial de clase abstracta de C# con ejemplo:¿Qué es la abstracción?
- Java BufferedReader:cómo leer un archivo en Java con un ejemplo
- type() y isinstance() en Python con ejemplos