【问题标题】:Serialization value without create object C#没有创建对象C#的序列化值
【发布时间】:2016-06-24 08:11:11
【问题描述】:

我有一个 MainWindow.xaml 类的工作,我想在我的情况下保存我的类的一些值:private static int bestrecord = 0;

如果没有专门为它创建的类,我如何保存并恢复它?

因为序列化只能保存一个对象,而我只想保存这个变量。

谢谢。

【问题讨论】:

  • 尝试查看应用程序设置 - 它们可以为每个用户保存应用程序:msdn.microsoft.com/en-us/library/bb397750(v=vs.110).aspx
  • 所以...如果方便可用的 API 使用对象/序列化:创建一个具有一个属性的对象,以进行序列化?老实说,您不会经常保存/恢复它,所以为什么要担心呢?
  • 如何创建二进制文件来存储你的值?
  • @Baldrick 使用应用程序设置的好主意。但我有一个问题:数据保存在哪里?
  • 默认情况下,放入您的用户应用程序数据文件夹中的文件中。它被配置为您的配置文件的一部分,并由 Windows 通过注册表项进行管理。最棒的是您可以加载和保存这些设置,而不必过多担心数据的实际存储位置。

标签: c# wpf serialization


【解决方案1】:

您可以使用应用程序设置功能,该功能几乎是为保存简单变量而设计的,这些变量是应用程序状态的一部分,需要在以后的会话中恢复。

文档是here

在 IDE 中使用设计器创建设置后,您可以像这样加载设置:

var mySetting = Properties.Settings.Default.MySettingName;

你可以正常编辑你的变量,这样保存

Properties.Settings.Default.MySettingName = mySetting ;
Properties.Settings.Default.Save();

【讨论】:

    【解决方案2】:

    我找到了一种将我的分数保存在 xml 文件中的非常好的方法。

    我基于Examples of XML Serialization

    为此,我创建了 2 个函数:

    private void SerializeElement()
    {
        XmlSerializer ser = new XmlSerializer(typeof(XmlElement));
        XmlElement myElement = new XmlDocument().CreateElement("bestRecord");
        myElement.InnerText = bestRecord.ToString();
        TextWriter writer = new StreamWriter("text.xml");
        ser.Serialize(writer, myElement);
        writer.Close();
    }
    

    private static int deserialize()
    {
        XmlSerializer ser = new XmlSerializer(typeof(XmlElement));
        StreamReader lecteur = new StreamReader("text.xml");
        XmlDocument myElement = new XmlDocument();
        XmlElement p = (XmlElement) ser.Deserialize(lecteur);
        lecteur.Close();
        return int.Parse(p.InnerText);
    }
    

    xml 文件如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <bestRecord>8</bestRecord>
    

    【讨论】:

    • 您的解决方案确实有效,但它混合了概念。如果你想写入一个只有一个值的文件,我建议使用 File 类的静态方法在文本文件中写入一个数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    相关资源
    最近更新 更多