Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengekalkan dan Memulihkan Objek Boleh Bersiri dalam .NET Menggunakan Pensirian Binari, XML dan JSON?

Bagaimana untuk Mengekalkan dan Memulihkan Objek Boleh Bersiri dalam .NET Menggunakan Pensirian Binari, XML dan JSON?

Barbara Streisand
Lepaskan: 2025-01-23 11:47:12
asal
278 orang telah melayarinya

How to Persist and Restore Serializable Objects in .NET Using Binary, XML, and JSON Serialization?

Mengekal dan memulihkan objek boleh bersiri menggunakan pensirilan binari, XML dan JSON dalam .NET

Siri objek dalam .NET membenarkan objek disimpan dalam storan berterusan dan kemudiannya diambil semula dalam bentuk asalnya. Untuk menyerikan objek, kelasnya mesti ditanda [Serializable]. Anotasi ini adalah penting apabila menggunakan penyirian binari, tetapi tidak diperlukan dengan penyiaran XML atau JSON.

Berikut ialah contoh fungsi untuk pensirilan binari, XML dan JSON:

Siri binari:

<code class="language-csharp">public static void WriteToBinaryFile<T>(string filePath, T objectToWrite, bool append = false)
{
    using (Stream stream = File.Open(filePath, append ? FileMode.Append : FileMode.Create))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        binaryFormatter.Serialize(stream, objectToWrite);
    }
}

public static T ReadFromBinaryFile<T>(string filePath)
{
    using (Stream stream = File.Open(filePath, FileMode.Open))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        return (T)binaryFormatter.Deserialize(stream);
    }
}</code>
Salin selepas log masuk

Siri XML:

<code class="language-csharp">public static void WriteToXmlFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
    TextWriter writer = null;
    try
    {
        var serializer = new XmlSerializer(typeof(T));
        writer = new StreamWriter(filePath, append);
        serializer.Serialize(writer, objectToWrite);
    }
    finally
    {
        if (writer != null)
            writer.Close();
    }
}

public static T ReadFromXmlFile<T>(string filePath) where T : new()
{
    TextReader reader = null;
    try
    {
        var serializer = new XmlSerializer(typeof(T));
        reader = new StreamReader(filePath);
        return (T)serializer.Deserialize(reader);
    }
    finally
    {
        if (reader != null)
            reader.Close();
    }
}</code>
Salin selepas log masuk

Siri JSON (memerlukan pakej Newtonsoft.Json NuGet):

<code class="language-csharp">public static void WriteToJsonFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
    TextWriter writer = null;
    try
    {
        var contentsToWriteToFile = JsonConvert.SerializeObject(objectToWrite);
        writer = new StreamWriter(filePath, append);
        writer.Write(contentsToWriteToFile);
    }
    finally
    {
        if (writer != null)
            writer.Close();
    }
}

public static T ReadFromJsonFile<T>(string filePath) where T : new()
{
    TextReader reader = null;
    try
    {
        reader = new StreamReader(filePath);
        var fileContents = reader.ReadToEnd();
        return JsonConvert.DeserializeObject<T>(fileContents);
    }
    finally
    {
        if (reader != null)
            reader.Close();
    }
}</code>
Salin selepas log masuk

Contoh penggunaan:

<code class="language-csharp">// 将someClass变量的内容写入文件。
WriteToBinaryFile<SomeClass>("C:\someClass.txt", object1);

// 将文件内容读回变量。
SomeClass object1 = ReadFromBinaryFile<SomeClass>("C:\someClass.txt");</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan dan Memulihkan Objek Boleh Bersiri dalam .NET Menggunakan Pensirian Binari, XML dan JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan