UWP / C#有关存储应用程序用户数据的建议?

时间:2018-09-03 09:35:28

标签: c# xml uwp

关于存储数据,我需要一些建议/意见。

我正在研究本质上存储用户输入数据,然后经常引用它。我想避免数据库存储,因为所有这些都将在本地引用。我已经看到您可以进行XML序列化的对象等,并且想知道您对数据存储的看法。

如果我逐步了解您正在做的事情,则可能会更好地帮助我了解要实现的目标:

  • 用户加载程序
  • 程序读取存储文件
  • 不同的控件(例如GridView和文本框)显示文档的特定部分,例如名称,日期等。
  • 用户可以通过在整个工作表的不同字段中输入数据来添加文件。
  • 用户可以在需要时自由保存文件,可以在需要时创建新文件,并可以随时打开工作表
  • 所有信息都需要扩展。也就是说,用户最多可以添加50个日期,30个名称等,并且每个名称都不能干扰另一个数据字段。用户界面控件将可以引用每种特定类型的所有数据

这是一个很大的任务,我一直在考虑使用XML来完成所有工作。我不确定这是否是最好的方法,并希望您提出意见。主要是由于数据可以通过用户输入始终动态调整的方式。

对此表示感谢。如有必要,我可以提供我想达到的目标的图像。

1 个答案:

答案 0 :(得分:2)

我个人使用Newtonsoft JSON保存用户数据。您可以像往常一样构建所有类,然后相当轻松地集成JSON序列化器/反序列化器。可能会有一些例外情况可能需要自定义序列化程序,但是要进行定制并不是很困难,特别是如果您只需要解释一小部分,然后可以将文件的其余部分传递给默认序列化程序,则尤其如此。

这是一个非常简单的示例,说明如何在文件中存储一些用户的一些键值首选项。

using Newtonsoft.Json;

[JsonObject]
public class UserData {
    [JsonProperty] //Add a JSON property "Username" which is a string
    public string Username { get; set; }

    //IEnumerable types are converted to/from arrays automatically by Newtonsoft        
    [JsonProperty("Options")] //Set the name in JSON file to "Options"
    public Dictionary<string, string> Preferences { get; set; }

    [JsonIgnore] //Excludes this property from the JSON output
    public bool SaveRequired { get; set; } //Set true when a change is made, set false when saved
}

有很多类似的库可以对XML进行完全相同的处理,但是我没有太多运气来弄清楚它们,而且当我只需要我知道的有效方法时,通常我的时间很紧。 如果您可以找到一个不错的XML库并理解如何正确使用它,由于其严格的结构性质,我建议您使用XML over JSON,并且您可以包括模式版本,并通过提供编写良好的模式来帮助集成到其他系统中。