c-sharp
  1. c-sharp-deserialization

C# Deserialization

In C#, deserialization is the process of converting a serialized object back into its original form. Serialization is commonly used to store or transmit objects, and deserialization is the reverse process to recreate those objects. This guide covers the syntax, usage, and considerations when performing deserialization in C#.

Syntax

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

public class DeserializationExample
{
    public static T Deserialize<T>(string filePath)
    {
        T deserializedObject;
        BinaryFormatter formatter = new BinaryFormatter();

        using (FileStream stream = new FileStream(filePath, FileMode.Open))
        {
            deserializedObject = (T)formatter.Deserialize(stream);
        }

        return deserializedObject;
    }
}

Example

[Serializable]
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        // Serialize a Person object first (not shown in this example)

        // Deserialization example
        Person deserializedPerson = DeserializationExample.Deserialize<Person>("person_data.dat");

        // Access deserialized data
        Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
    }
}

Output

The output will be the name and age of the deserialized person.

Explanation

  • The Person class is marked with the [Serializable] attribute, indicating it can be serialized and deserialized.
  • The DeserializationExample class provides a generic method Deserialize<T> to perform deserialization from a file.

Use

Use deserialization in C# when:

  • You need to reconstruct objects from previously serialized data.
  • Data needs to be persisted, transmitted, or stored in a different format.
  • You want to share complex object structures between different parts of a program.

Important Points

  • The serialized and deserialized classes must have the [Serializable] attribute (for BinaryFormatter).
  • JSON or XML serialization may require additional attributes like [DataContract] and [DataMember].
  • Ensure the deserialization process is secure to prevent potential security risks.

Summary

C# deserialization is a critical aspect of working with serialized data. It allows the recreation of objects from their serialized form, enabling data persistence and communication between different parts of a program. Whether dealing with binary, JSON, or XML serialization, understanding how to properly deserialize data is essential for maintaining data integrity and consistency in C# applications.

Published on: