目标:序列化ClassMain的所有公共属性:
public class ClassMain
{
ClassA classA = new ClassA();
public ClassMain()
{
classA.Prop1 = "Prop1";
classA.Prop2 = "Prop2";
}
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public ClassA ClassA
{
get
{
return classA;
}
}
}
ClassA的:
public class ClassA
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
这是我如何序列化:
private void button1_Click(object sender, EventArgs e)
{
ClassMain classMain = new ClassMain();
classMain.Prop1 = "Prop1";
classMain.Prop2 = "Prop2";
XmlSerializer mySerializer = new XmlSerializer(typeof(ClassMain));
StreamWriter myWriter = new StreamWriter("xml1.xml");
mySerializer.Serialize(myWriter, classMain);
myWriter.Close();
}
在这种情况下,xml输出为:
<?xml version="1.0" encoding="utf-8"?>
<ClassMain xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Prop1>Prop1</Prop1>
<Prop2>Prop2</Prop2>
</ClassMain>
如您所见,缺少ClassA属性。
任何人都可以帮助我吗?
此致
答案 0 :(得分:3)
属性只会包含在Xml序列化中,如果它们同时具有一个getter 和一个setter,可能是因为这个规则确保序列化可以往返,即如果没有setter,你就不会能够将Xml反序列化回目标对象。
您的ClassA属性没有setter。