给出一个标记为[Serializable]
的类,我们如何知道XmlSerializer
是否将其成员序列化(该成员没有属性)?< / p>
例如:
[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字符串后,我发现只有x1
和Y1
被序列化。因此,我推断:
public
字段和属性将被序列化。 private
字段和属性不会被序列化。static
和readonly
字段和属性不会被序列化。我的问题是,是否有任何准则可以知道:在不标记类成员任何属性的情况下,我们如何知道该成员将被序列化?
答案 0 :(得分:1)
由于XML序列化不使用SerializableAttribute
,因此在类上有或没有[Serializable]
的情况下,将什么属性序列化为XML都没有区别(请参阅What is [Serializable] and when should I use it?,以了解使用它的原因)
您似乎已经正确地从Introducing XML Serialization中获得了序列化的列表:
XML序列化仅将对象的公共字段和属性值序列化为XML流。 XML序列化不包含类型信息。