首页 > 解决方案 > 序列化为 json 时 .resx 属性的默认回退

问题描述

当我们使用.resx资源文件时,每个文件通常有几种语言。
例如:
Settings.resx, Settings.he.resx,Settings.fr.resx等等...

框架将.net根据当前文化使用相关文件。
如果缺少某个属性Settings.he.resx,它将在 default 中搜索它Settings.resx

这样我们就有了一个“基础”资源文件,我们可以覆盖不同文化中的特定属性。

我的问题是我正在将此文件序列化为json(作为ajax响应),但我失去了在缺少属性时回退到默认文件的能力。

序列化对象时有没有办法保留这种行为?
我更喜欢保持序列化简单,而不是遍历所有键。

这是我的序列化代码:

protected JObject GetResourcesAsJsObject(ResourceManager resourceManager)
{
    var resourceAsDictionary = GetResources(resourceManager);
    var resourceAsJsonString = JsonConvert.SerializeObject(resourceAsDictionary);
    var resourceAsJsObject = JObject.Parse(resourceAsJsonString);

    return resourceAsJsObject;
}

并像这样使用它(哪里Settings是 ref Settings.resx):

var jsResources = GetResourcesAsJsObject(Settings.ResourceManager);

标签: c#.netjsonresx

解决方案


推荐阅读