1

他のカスタムオブジェクトを含むカスタムオブジェクトをxmlシリアル化したい。私は以下のようにしますが、うまくいきません。

class A()
{
public B b;
}

class B()
{
public int a;
}

System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(A));  
XmlAttributes xmlAttributes = new XmlAttributes();   
System.IO.StreamWriter file = new System.IO.StreamWriter(   @"d:\SerializationOverview.xml");
writer.Serialize(file, new A());  
file.Close();

結果は次のとおりです。

<A>
</A>
4

1 に答える 1

2

まず、両方ABをマークする必要がありますpublic

はシリアル化new A()するための値を持っていません。bnullはシリアル化されません。それに値を与えます:

writer.Serialize(file, new A { b = new B { a = 123 } });

また、パブリックフィールドよりもプロパティを優先するようにしてください。

例えば:

using System.IO;
using System.Xml.Serialization;
public class A
{
    public B B { get; set; }
}
public class B
{
    public int A {get;set;}
}
static class Program
{
    static void Main()
    {
        var writer = new XmlSerializer(typeof(A));
        using (var file = File.Create(@"SerializationOverview.xml"))
        {
            writer.Serialize(file, new A { B = new B { A = 123 } });
        }
    }
}
于 2012-11-23T11:45:59.070 に答える