【问题标题】:C# serialization: xml comes out emptyC# 序列化:xml 出来为空
【发布时间】:2014-09-30 05:59:34
【问题描述】:

我正在尝试使用 SharpSerializer 将对象序列化为 xml 文件。
不幸的是,生成的 xml 文件不包含我提供的任何信息。
我的代码是这样的:

public class SaveGameInfo
{
    public string test;
}

public class main
{
    public void onClickedSave()
    {
        SaveGameInfo obj = new SaveGameInfo();
        obj.test = "TestInformation";
        SharpSerializer sharpSerializer = new SharpSerializer();
        sharpSerializer.Serialize(obj, "test.xml");
    }
}

生成的 XML 仅包含以下信息:

<Complex name="Root" type="SaveGameInfo, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />

感觉好像我遗漏了一些明显的东西,但我不知道它是什么。

【问题讨论】:

    标签: c# serialization xml-serialization


    【解决方案1】:

    您应该使用属性而不是字段:

    public class SaveGameInfo
    {
        public string Test { get; set; }
    }
    
    public class main
    {
        public void onClickedSave()
        {
            SaveGameInfo obj = new SaveGameInfo();
            obj.Test = "TestInformation";
            SharpSerializer sharpSerializer = new SharpSerializer();
            sharpSerializer.Serialize(obj, "test.xml");
        }
    }
    

    Note 2:SharpSerializer 仅序列化对象属性。字段是 没有序列化。如果你想序列化字段,它们必须是 包裹在属性中。

    【讨论】:

      【解决方案2】:

      也许在不使用 SharpSerializer 的情况下试试这个。

      public class main
      {
          public void onClickedSave()
          {
              SaveGameInfo obj = new SaveGameInfo();
              obj.test = "TestInformation";
             obj.SerializeToXml("Test.xml");  
          }
      }
      
      public class SaveGameInfo
      {
          public string test;
      
          public void SerializeToXml(string fullFileName)
          {
              var serializer = new XmlSerializer(typeof(SaveGameInfo));
              var textWriter = new StreamWriter(fullFileName);
              serializer.Serialize(textWriter, this);
              textWriter.Close();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多