c# - XML 序列化器 : why deserialization doesn't work in my case?

标签 c# xml-serialization

伙计们。我使用 XMLSerializer 来保留和恢复程序选项。这是代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace XMLAsk
{
    class Test
    {
        public static string ConfigFileName = "C:\\Work\\TMP\\Config.xml";

        public static void Main()
        {

            MyOptions myOptions = new MyOptions();
            myOptions.Title = "Hello, world!";
            myOptions.Rating = 15;

            SerializeToXML(myOptions);

            MyOptions myOptions2 = new MyOptions();
            DeserializeFromXML(myOptions2);

            MessageBox.Show(myOptions2.Title);


        }

        public static void SerializeToXML(MyOptions myOptions)
        {

            XmlSerializer serializer = new XmlSerializer(typeof(MyOptions));
            TextWriter textWriter = new StreamWriter(ConfigFileName);
            serializer.Serialize(textWriter, myOptions);
            textWriter.Close();

        }

        public static void DeserializeFromXML(MyOptions myOptions2)
        {

            XmlSerializer deserializer = new XmlSerializer(typeof(MyOptions));
            TextReader textReader = new StreamReader(ConfigFileName);
            myOptions2 = (MyOptions)deserializer.Deserialize(textReader);
            textReader.Close();

        }
    }

    public class MyOptions
    {


        private string title;
        private int rating;

        public string Title
        {
            get { return title;  }
            set { title = value; }
        }

        public int Rating
        {
            get { return rating; }
            set { rating = value;}
        }

   }

}

序列化确实有效。我得到以下 xml 文件 (Config.xml):

<?xml version="1.0" encoding="utf-8" ?> 
- <MyOptions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Title>Hello, world!</Title> 
  <Rating>15</Rating> 
  </MyOptions>

但是反序列化好像不行。例如,当我使用 MessageBox.Show(myOptions2.Title); 显示其中一个选项时(参见上面的代码),然后我得到一个空字符串。

为什么?我的代码有什么问题?

最佳答案

myOptions2 = (MyOptions)deserializer.Deserialize(textReader);

您需要返回该对象。或者使用 ref 参数。

关于c# - XML 序列化器 : why deserialization doesn't work in my case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1775682/

相关文章:

c# - Winform UserControl 中的点击事件

c# - XML 序列化程序无法处理属性

xml-serialization - "The specified type was not recognized"尝试调用 Web 服务调用时出现异常

c# - 自定义控件上的自定义事件

c# - 没有 xsd.exe 的 XML 序列化和模式

c# - 在没有序列化的情况下克隆对象

c# - 自定义 XmlSerializer 只在 WebApi 中添加命名空间

c# - 这是如何导致无限循环的?

c# - 使用对象作为键时.Net MemoryCache Miss

c# - 这个 C# 按位或运算的结果是什么?