.NET でのバイナリ、XML、および JSON シリアル化を使用したシリアル化可能なオブジェクトの永続化と復元
.NET のオブジェクトのシリアル化により、オブジェクトを永続ストレージに保存し、後で元の形式で取得できるようになります。オブジェクトをシリアル化するには、そのクラスに [Serializable]
のマークを付ける必要があります。このアノテーションは、バイナリ シリアル化を使用する場合には重要ですが、XML または JSON シリアル化では必要ありません。
次に、バイナリ、XML、および JSON シリアル化の関数の例を示します。
バイナリシリアル化:
<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>
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>
JSON シリアル化 (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>
使用例:
<code class="language-csharp">// 将someClass变量的内容写入文件。 WriteToBinaryFile<SomeClass>("C:\someClass.txt", object1); // 将文件内容读回变量。 SomeClass object1 = ReadFromBinaryFile<SomeClass>("C:\someClass.txt");</code>
以上がバイナリ、XML、および JSON シリアル化を使用して .NET でシリアル化可能なオブジェクトを永続化および復元する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。