C#:在生成类[Serializable]时,哪些成员将被序列化为XML元素



给定一个标记为[Serializable]的类,我们如何知道它的成员是否会被XmlSerializer序列化(该成员没有属性(?

例如:

[Serializable]
public class C2
{
public int x1 = 1;
private int x2 = 2;
public static int x3 = 3;
public readonly int x4 = 4;
public int Y1 { get; set; }
public static int Y2 { get; set; }
}

我们有一个类C2,在将一个新对象C2 c = new C2()序列化为XML字符串后,我发现只有x1Y1被序列化。所以我推断

  1. public字段和属性将被序列化
  2. private字段和属性将不会序列化
  3. CCD_ 9和CCD_
  4. MethodInfo将不会序列化

我的问题是,有什么准则可以知道:如果不将任何属性标记为类的成员,我们如何知道该成员是否会被序列化?

由于XML序列化不使用SerializableAttribute,因此在类上使用或不使用[Serializable]时,哪些属性将被序列化为XML没有区别(请参阅什么是[Serializable]以及何时应该使用它?了解使用它的原因(。

您似乎已经正确地从IntroducingXMLSerialization:中获得了序列化内容的列表

XML序列化只将对象的公共字段和属性值序列化到XML流中。XML序列化不包括类型信息。

最新更新