我正在编写一个应用程序,以获取用户数据并在本地存储以供后续使用。该应用程序将经常启动和停止,并且我希望在应用程序启动/结束时保存/加载数据。
如果使用平面文件,它会非常简单,因为数据不需要得到保护(它只会存储在此台计算机上)。以下是我认为可选的选项:
- 平面文件
- XML
- SQL数据库
与XML相比,平面文件需要更多的维护工作(没有像XML那样的内置类),但是我以前从未使用过XML,而且SQL似乎对这个相对简单的任务来说有些过头了。是否还有其他值得探索的方式?如果没有,哪个是最佳解决方案?
编辑:为了问题增加一些数据,基本上我想要存储的仅是像这样的字典:
Dictionary<string, List<Account>>
其中 Account 是另一种自定义类型。
我是否应该将字典序列化为 xmlroot,然后将 Account 类型序列化为属性?
更新2:
因此可以序列化字典。让它变得复杂的是,这个字典的值本身是一个泛型,它是类型为 Account 的复杂数据结构列表。每个 Account 都相当简单,只是一堆属性而已。
我的理解是,这里的目标是尝试得到以下结果:
<Username1>
<Account1>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account1>
</Username1>
<Username2>
<Account1>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account1>
<Account2>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account2>
</Username2>
如您所见,层次结构如下:
- 用户名 (字典中的字符串) >
- 帐户 (列表中的每个帐户) >
- 帐户数据 (即类属性)。
从Dictionary<Username, List<Account>>
获取此布局是棘手的问题,并且这也是本问题的重点。
这里有很多关于序列化的“如何”回答,这是我的错,因为我之前没有表述清楚,但现在我正在寻找一个明确的解决方案。