将数据保存到.net中的文件时的良好编码实践

Eat*_*aco 5 .net c# file-io

给出一点背景知识.

我创建了一个应用程序,允许用户保存设置,然后在以后调用设置.为此,我创建了一些可序列化的对象.我已经使用BinaryFormatter工作而没有太多麻烦.

我开始遇到问题的地方是我升级软件并添加新设置.现在我的可序列化对象不匹配,所以我必须更新文件.我已成功完成了几个版本.但要做到这一点,我尝试反序列化文件,如果它抛出异常,我尝试使用下一个版本..然后是下一个..然后是下一个...直到找到合适的人 然后我必须为每个旧版本编写转换函数,以将其转换为最新版本.我也创建了一个"修订版"文件,所以我可以检查一下他们有什么版本然后升级它,但是我仍然需要保留很多不同的"版本"并为所有这些版本编写转换函数...这似乎对我来说本质上是凌乱的,如果我继续走这条路线,后来就容易臃肿.

必须有一个更好的方法来做到这一点,我只是不确定如何.

谢谢

IAb*_*act 3

您需要编写序列化绑定器来解析程序集。

对于设置,我使用 aDictionary<string, byte[]>保存到文件。我连载了字典,一切都很好。添加新设置时,如果在设置文件中找不到,我会提供默认设置。

另外,如果要向序列化对象添加字段,则可以使用 [Optional] 进行装饰。