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>
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>
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>
Contoh penggunaan:
<code class="language-csharp">// 将someClass变量的内容写入文件。 WriteToBinaryFile<SomeClass>("C:\someClass.txt", object1); // 将文件内容读回变量。 SomeClass object1 = ReadFromBinaryFile<SomeClass>("C:\someClass.txt");</code>
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!