我是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在基础中找到变量.这怎么可能?或者我在其他地方错了?
私有变量仍将存在于反序列化对象中,但它们的值不会存储在XML序列化版本中.
为了演示这一点,如果您创建对象的实例,请更改该weight值,然后将其序列化为XML.如果对其进行反序列化weight,则反序列化对象中的值将是默认值,而不是原始对象上设置的值.
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |