c# - 如何在运行时合并两个资源文件?
问题描述
这是否可以维护多个资源文件或以这样的方式合并它们,以便我们有一个默认文件,其中包含每条记录的默认值,而其他资源文件应根据其要求覆盖记录。
我们的代码应该检查特定记录是否被覆盖,如果它被覆盖,那么它将采用被覆盖的值,否则它将从默认资源文件中获取。
例如:- 我的默认资源文件有记录
<data name="Common_Color" xml:space="preserve">
<value>#1892E7</value>
</data>
<data name="LoginView_Icon_Color" xml:space="preserve">
<value>#1892E7</value>
</data>
<data name="Here_Text_Color" xml:space="preserve">
<value>#FFFF1BF5</value>
</data>
其他文件 Resources1.resw 有类似的记录
<data name="Common_Color" xml:space="preserve">
<value>#FFFFF</value>
</data>
其他文件 Resources2.resw 有类似的记录
<data name="LoginView_Icon_Color" xml:space="preserve">
<value>#1892E7</value>
</data>
这样,如果我们需要 Common_Color 值,我们可以合并默认文件和 Resourse1 文件并将 Common_Color 值从 #1892E7 更改为 #FFFFF 并拥有一个这样的文件并在我们的代码中使用这个文件
<data name="Common_Color" xml:space="preserve">
<value>#FFFFF</value>
</data>
<data name="LoginView_Icon_Color" xml:space="preserve">
<value>#1892E7</value>
</data>
<data name="Here_Text_Color" xml:space="preserve">
<value>#FFFF1BF5</value>
</data>
解决方案
如何在运行时合并两个资源文件?
UWP 不提供直接合并resw 文件的api,而resw 常用于UWP 平台内UI 中的字符串本地化。我们可以resw
使用 Visual Studio 编辑文件并使用以下内容加载内容,但我们无法在运行时编辑它们的内容。
var resourceLoader = Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView();
this.myXAMLTextBlockElement.Text = resourceLoader.GetString("Farewell");
根据您的要求,我们建议您使用json文件替换,您可以将 json 文件反序列化为对象,比较不同并合并,然后将新对象序列化为 json 文件。
推荐阅读
- flutter - 无法删除构建。程序可能仍在使用目录中的文件
- javascript - 侧边栏中的底部对齐项目
- python - 来自网络抓取多个页面的最终数据框
- c++ - 如果我以可移植性为目标,我应该对具有负值的字符使用带符号的字符吗?
- python - 如何修复“ElementNotInteractableException”异常?
- javascript - 找出事件来自哪个组件
- azure-functions - Azure Function X-FORWARDED-FOR 标头格式 IPV6?
- elasticsearch - Elasticsearch statefulset 不会在 rook-cephfs 上创建 volumesClaims
- python - sklearnmutual_info_classif 根据特征顺序返回不同的值
- c# - 1 个模型在一个视图中拆分为 3 个表,这可能吗?