【问题标题】:How to XMLSerialize member Object inside a container object如何 XMLSerialize 容器对象内的成员对象
【发布时间】:2013-09-30 23:19:27
【问题描述】:

我在谷歌上搜索了一个小时,但我认为我没有使用正确的词,因为我找不到一个非常简单的例子来说明我正在尝试做的事情。人们总是在示例中使用复杂的结构,如 List 或派生对象。

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

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

超级文件

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 中,它会被序列化,但其他 2 个成员会被跳过。我认为它会被序列化,因为它不是一个复杂的类型......

public int _nDummy;

希望清楚!

谢谢!

【问题讨论】:

  • 尝试在属性(NI和Planif)上放置一个setter;
  • 就是这样!谢谢NDJ。你能写一个完整的答案并解释原因吗?
  • 完成 - 很高兴它有帮助!

标签: c# .net serialization xml-serialization


【解决方案1】:

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

这是一个包含一些细节的答案 - Why isn't my public property serialized by the XmlSerializer?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2015-06-09
    • 2011-10-14
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多