XmlSerializer一个具有多个类属性的类

时间:2010-05-29 18:33:32

标签: .net xmlserializer

目标:序列化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属性。

任何人都可以帮助我吗?

此致

1 个答案:

答案 0 :(得分:3)

属性只会包含在Xml序列化中,如果它们同时具有一个getter 一个setter,可能是因为这个规则确保序列化可以往返,即如果没有setter,你就不会能够将Xml反序列化回目标对象。

您的ClassA属性没有setter。