今天在项目中接触了系列化这个技术点,以前只是听说过这个词,但是还真不知道是干嘛用的,今天就简单的了解一下。
在谈XML序列化之前,我们先来了解一下序列化。序列化是将对象转换成易于传输的形式的过程。例如,可以序列化对象,并使用HTTP通过Internet在客户端和服务器之间进行传输。序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。这就是序列化的意义所在。
我们可以把对象序列化为不同的格式,比如说,Json序列化、XML序列化、二进制序列化、SOAP序列化等,以上这些不同的格式也都是为了适应具体的业务需求。
下面我们就来说一下XML序列化:
<span style="font-family:SimSun;font-size:14px;">namespace 学习测试
{
class Program
{
static void Main(string[] args)
{
Person p = new Person(1, "刘备", 176);
string xmlString = "";
//xml序列化开始
using (MemoryStream ms = new MemoryStream())
{
Type t = p.GetType();
XmlSerializer xml = new XmlSerializer(t);
xml.Serialize(ms, p);
byte[] arr = ms.ToArray();
xmlString = Encoding.UTF8.GetString(arr, 0, arr.Length);
ms.Close();
}
Console.WriteLine(xmlString);
Console.ReadKey();
}
}
public class Person
{
//必须定义一个无参数构造函数,否则无法序列化(当然完全不写构造函数也是可以序列化的,因为有个默认的无参构造函数)
public Person() { }
public Person(int id, string name, int age)
{
Id = id;
Name = name;
//Age = age;
}
public int Id { get; set; }
public string Name { get; set; }
//私有字段
private int Age { get; set; }
//只读属性
private int height;
public int Height { get { return height; } }
}
}</span>
上面为引用别人的例子,自己做了一下。自己后面还会对xml序列化做进一步的了解,现在就简单理解到这里。