为什么不需要将类标记为要序列化的[DataContract]或[Serializable]属性?

Kev*_*ith 2 c# serialization

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();
   }
}    
Run Code Online (Sandbox Code Playgroud)

但是,为什么类clsPerson不需要用[DataContract]或[Serializable]属性标记?

Jes*_*cer 6

因为XmlSerializer不要求将这些属性放在类上.只有BinaryFormatterDataContractSerializer可以.就此而言,DataContractSerializer可以做到.

请参阅相关问题:为什么序列化对象需要序列化属性