下面是“.Net中的序列化和反序列化详解”的攻略:
什么是序列化和反序列化?
序列化是指将对象转换为可存储或传输的格式,反序列化则是将这些格式转换回对象。
在 .Net 中,对象序列化通过将其转换为二进制格式或 XML 文档来实现,允许在网络上发送、保存到磁盘或在应用程序之间传递对象。
.Net 实现对象序列化和反序列化
在 .Net 中,对象序列化和反序列化都由 System.Runtime.Serialization 命名空间下的类来实现。
对象序列化
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
Person person = new Person()
{
Name = "Lucy",
Age = 18
};
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("Person.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, person);
stream.Close();
Console.WriteLine("Person object has been serialized.");
}
}
以上代码通过创建一个 Person 对象,使用 BinaryFormatter 对象进行序列化,并将其保存到磁盘上的文件中。注意,在 Person 类前面加上了 Serializable 属性,表示该类可以进行序列化。
对象反序列化
class Program
{
static void Main(string[] args)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("Person.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
Person person = (Person)formatter.Deserialize(stream);
stream.Close();
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
以上代码通过读取磁盘上的文件,并使用 BinaryFormatter 对象进行反序列化,将二进制格式转换为 Person 对象。
XML 序列化和反序列化
除了二进制格式,.Net 中还支持 XML 格式的对象序列化。
对象序列化
using System;
using System.IO;
using System.Xml.Serialization;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
Person person = new Person()
{
Name = "Lucy",
Age = 18
};
XmlSerializer serializer = new XmlSerializer(typeof(Person));
Stream stream = new FileStream("Person.xml", FileMode.Create, FileAccess.Write, FileShare.None);
serializer.Serialize(stream, person);
stream.Close();
Console.WriteLine("Person object has been serialized.");
}
}
以上代码与二进制序列化的代码类似,只是使用的是 XmlSerializer 对象进行序列化。
对象反序列化
class Program
{
static void Main(string[] args)
{
XmlSerializer serializer = new XmlSerializer(typeof(Person));
Stream stream = new FileStream("Person.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
Person person = (Person)serializer.Deserialize(stream);
stream.Close();
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
以上代码与二进制反序列化的代码类似,只是使用的是 XmlSerializer 对象进行反序列化。
总结
在 .Net 中,对象序列化和反序列化允许轻松地将对象转换为可存储或传输的格式,并将其转换回对象。这些序列化和反序列化方式包括二进制格式和 XML 格式。要进行序列化或反序列化,需要使用 System.Runtime.Serialization 命名空间下的类,如 BinaryFormatter 和 XmlSerializer。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.Net中的序列化和反序列化详解 - Python技术站