为什么不';t需要用要序列化的[DataContract]或[Serializable]属性标记类
本文关键字:DataContract 属性 Serializable 序列化 为什么不 | 更新日期: 2023-09-27 18:20:35
Microsoft在其文章"如何使用Visual C#将对象序列化为XML"中提供了代码
using System;
public class clsPerson
{
public string FirstName;
public string MI;
public string LastName;
}
class class1
{
static void Main(string[] args)
{
clsPerson p=new clsPerson();
p.FirstName = "Jeff";
p.MI = "A";
p.LastName = "Price";
XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
x.Serialize(Console.Out, p);
Console.WriteLine();
Console.ReadLine();
}
}
但是,为什么不需要用[DataContract]或[Serializable]属性来标记类clsPerson呢?
因为XmlSerializer不需要将这些属性放在类上。只有BinaryFormatter和DataContractSerializer能做到这一点。因此,DataContractSerializer
可以不使用。
请参阅相关问题:为什么要序列化的对象需要Serializable Attribute
根据设计,XML序列化使用get-and-set访问器序列化公共字段和公共属性。序列化类型还必须具有无参数构造函数。这是唯一的合同