我在 .NET 中有一组自定义 XML 配置管理类。
我的应用程序中有两个配置范围:
User:无论她登录的帐户如何,该设置都适用于用户。存储在用户目录中的 XML 配置文件中。
用户/帐户:该设置适用于登录到特定帐户的用户。存储在用户目录中特定帐户子目录下的 XML 配置文件中。
这两个 XML 文档具有相同的结构,并且可以手动修改。当应用程序启动时,我从用户的配置文件中读取 XML 配置,并从 User/Account 目录中读取 XML 配置。然后我将这两个 XML 文档合并到一个 XDocument 中,然后将 XML 反序列化为在 XDocument 的部分之后建模的对象。如果存在用户/帐户级别设置,它应该覆盖用户级别设置。例子:
用户档案:
<FileSettings>
<DownloadPath>C:\downloads</DownloadPath>
<UploadPath>C:\uploads</UploadPath>
</FileSettings>
账户 XYZ 的用户/账户文件:
<FileSettings>
<DownloadPath>C:\newlocation\xyz\mystuff</DownloadPath>
</FileSettings>
合并后的结果:
<FileSettings>
<DownloadPath>C:\newlocation\xyz\mystuff</DownloadPath>
<UploadPath>C:\uploads</UploadPath>
</FileSettings>
在上面的示例中,将从该部分实例化具有 2 个属性的 FileSettings 对象 - DownloadPath 和 UploadPath。
这是我的问题:我不知道 DownloadPath 和 UploadPath 来自哪个配置文件(即范围)。结果,当对象需要再次序列化时,它不知道哪些属性放在哪个文件中。
问题:在逐个属性的基础上存储“源”的最佳方法是什么,以便我可以确保将设置写入读取它的同一配置文件?
谢谢。