.NET에서 바이너리, XML 및 JSON 직렬화를 사용하여 직렬화 가능한 객체 유지 및 복원
.NET의 개체 직렬화를 사용하면 개체를 영구 저장소에 저장하고 나중에 원래 형식으로 검색할 수 있습니다. 객체를 직렬화하려면 해당 클래스를 [Serializable]
로 표시해야 합니다. 이 주석은 이진 직렬화를 사용할 때 중요하지만 XML 또는 JSON 직렬화에는 필요하지 않습니다.
다음은 바이너리, XML 및 JSON 직렬화를 위한 함수의 예입니다.
바이너리 직렬화:
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); } }
XML 직렬화:
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(); } }
JSON 직렬화(Newtonsoft.Json NuGet 패키지 필요):
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(); } }
사용 예:
// 将someClass变量的内容写入文件。 WriteToBinaryFile<SomeClass>("C:\someClass.txt", object1); // 将文件内容读回变量。 SomeClass object1 = ReadFromBinaryFile<SomeClass>("C:\someClass.txt");
위 내용은 바이너리, XML 및 JSON 직렬화를 사용하여 .NET에서 직렬화 가능 개체를 유지하고 복원하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!