如何在容器对象中使用XMLSerialize成员Object

时间:2013-09-30 23:19:28

标签: c# .net serialization xml-serialization

我一直在谷歌搜索这个一个小时,但我想我没有使用正确的词,因为我找不到一个非常简单的例子,我正在尝试做什么。人们总是在样本中使用像List或派生对象这样的复杂结构。

我想要做的就是将名为SuperFile的主要对象XMLSerialize到一个文件中。此SuperFile类包含2个成员,这2个成员未序列化,因此生成的XML文件为空(仅包含标题)。

这是我的代码,我做错了什么?

SuperFile

public class SuperFile
{
        private NetworkInfo _networkInfo;
        private Planification _planification;

        public NetworkInfo NI
        {
            get
            {
                return _networkInfo;
            }
        }

        public Planification Planif
        {
            get
            {
                return _planification;
            }
        }
}

NetworkInfo和Planification是非常普通的类,主要是双成员,如果我愿意,它们可以完全自行序列化。但现在,我希望它们在SuperFile对象内部进行序列化。

最后,这是我的序列化代码

public void Save(string strFilename)
{
    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(ExoFile));
    TextWriter WriteFileStream = new StreamWriter(strFilename);
    x.Serialize(WriteFileStream, this);

    WriteFileStream.Close();
}

如果我把它放在SuperFile中,它会被序列化,但另外两个成员会被跳过。我认为它是序列化的,因为它不是一个复杂的类型...

public int _nDummy;

希望它清楚!

谢谢!

1 个答案:

答案 0 :(得分:2)

XMLSerializer有一些限制,其中一个是需要一个setter。 (它也没有序列化私有字段,索引器......)。这不是一个明显的问题,过去让我摸不着头脑。)

这是一个有关详细信息的答案 - Why isn't my public property serialized by the XmlSerializer?