对不起我的英语不好.我对XmlSerializer很奇怪.这是我的代码
[Serializable]
public class Radio
{
public bool hasSubWoofers;
public double[] stationPresets;
[XmlIgnoreAttribute]
public string radioId = "X-3454";
}
[Serializable]
public class Car
{
public Radio radio = new Radio();
public int speed;
}
[Serializable]
public class JamesBondCar : Car
{
public bool canFly;
public bool canSubmerge;
private string flag = "string flag";
}
Run Code Online (Sandbox Code Playgroud)
class JamesBondCar有私有成员'flag',在序列化期间,XmlSerializer不应该序列化它.在XML中,我正在寻找它.是'标志'字段:
<JamesBondCar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<radio>
<hasSubWoofers>true</hasSubWoofers>
<stationPresets>
<double>192.3</double>
<double>45.2</double>
<double>456.3</double>
</stationPresets>
</radio>
<speed>342</speed>
<canFly>true</canFly>
<canSubmerge>false</canSubmerge>
</JamesBondCar>
Run Code Online (Sandbox Code Playgroud)
但是,这是主要功能:
JamesBondCar bond = new JamesBondCar();
bond.canFly = true;
bond.canSubmerge = false;
bond.speed = 342;
bond.radio.hasSubWoofers = true;
bond.radio.stationPresets = new double[] { 192.3, 45.2, 456.3 };
bond.radio.radioId = "Y-3424";
FileStream fs = new FileStream("car.xml", FileMode.Create, FileAccess.Write);
XmlSerializer serializer = new XmlSerializer(typeof(JamesBondCar));
serializer.Serialize(fs, bond);
fs.Close();
FileStream fs2 = new FileStream("car.xml", FileMode.Open, FileAccess.Read);
JamesBondCar jcar = (JamesBondCar)serializer.Deserialize(fs2);
Run Code Online (Sandbox Code Playgroud)
在调试中序列化后,我可以在jcar instanse'flag'字段中找到"string flag"值.这怎么可能?XML没有这个价值.