序列化/反序列化设置并处理不断变化的模型

问题描述

背景

我的应用程序使用多个 ResourceDictionary 来存储其设置。 关闭应用程序时,设置会写入 XAML 文件

这是加载顺序(如果位置缺少设置,则跳转到另一个):

  1. 本地:本地设置,可移植,与主可执行文件存储在同一文件夹中。
  2. AppData:全局设置,不可移植,存储在 AppData 文件夹中。
  3. 认:认设置,常绿,嵌入在主可执行文件中。

用户关闭应用程序时,与认设置不同的设置将作为一个简单的 XAML 文件写入 Local 或 AppData 文件夹(本地文件夹的首选项),其中包含属性ResourceDictionary

限制

我正在使用一个可执行的应用程序,所以我没有依赖。 因此,我使用纯文本文件作为我的存储方法

问题

由于我使用标准 XamlWriter/XamlReader 序列化和反序列化 XAML 文件,因此模型更改时我很容易出现异常。

我可以检测到错误的行(当一行的属性因模型更改而无法加载时)并删除它们,但由于我还存储了具有子属性的复杂类型,所以它没有多大帮助.

想法

我正在考虑对每个设置文件进行版本控制,并在需要时向上/向下迁移设置(当被不匹配的模型加载时)。

这将解决我的问题,但需要更改设置的存储和加载方式。

问题

我需要一种简单的方法来存储可以一个一个读取的属性名称、类型、值),对于复杂类型(数组、具有子属性的类型)有一种特殊情况。

我想知道 .NET 中是否已经有一些东西(不是 Properties 类,它有其他问题)或者可以修改为我需要的东西。

如果没有可用的东西,你会如何创造这样的东西?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)