私有变量的XML序列化

1 c# xml-serialization

我是XML序列化的新手,我已经读过private变量在公共属性下给出之前无法序列化.但是在反序列化后进行调试时,我也可以在反序列化对象中找到私有变量.有人可以解释一下吗?这是我的代码:

class Program
{
    static void Main(string[] args)
    {
        XmlSerializer xs = new XmlSerializer(typeof(Nokia));
        Nokia n = new Nokia();

        using (Stream s = new FileStream("XMLFile", FileMode.Create, FileAccess.Write, FileShare.None))
        {
            xs.Serialize(s, n);
        }

        XmlSerializer xs1 = new XmlSerializer(typeof(Nokia));
        using (Stream ds = File.OpenRead("XMLFile"))
        {
            Nokia dn = (Nokia)xs1.Deserialize(ds);
        }
    }
}

public class Mobile
{
    public int Height = 10;
    private int weight = 20;
    public Mobile() {}
}

public class Nokia : Mobile
{
    public string Signal = "Poor";
    public Nokia() {}
}
Run Code Online (Sandbox Code Playgroud)

在反序列化后快速查看对象的调试时,我能够weight在基础中找到变量.这怎么可能?或者我在其他地方错了?

Iri*_*ium 5

私有变量仍将存在于反序列化对象中,但它们的值不会存储在XML序列化版本中.

为了演示这一点,如果您创建对象的实例,请更改该weight值,然后将其序列化为XML.如果对其进行反序列化weight,则反序列化对象中的值将是默认值,而不是原始对象上设置的值.