【发布时间】:2015-11-26 17:41:32
【问题描述】:
对于我的应用程序的每个客户端,我都有位于不同命名空间中的 .resx 文件。说Resources.FirstClient.Home.resx 和Resources.SecondClient.Home.resx。大多数字符串对于每个客户端都是通用的,所以我想引入一个默认命名空间Resources.Default.Home.resx,如果没有为客户端找到字符串,我可以使用它。
我的问题是我不知道如何确定是否找不到资源文件。 (例如 Resources.ThirdClient.Home.resx 不存在,所以我想改用 "Resources.Default.Home.resx)
现在,我发现处理它的唯一方法是捕获 MissingManifestResourceException 抛出的:
var resourceManager = new ResourceManager("Resources.ThirdClient.Home", typeof(ResourceFactory).Assembly);
string str;
try
{
str = resourceManager.GetString("myString");
}
catch(MissingManifestResourceException e)
{
resourceManager = new ResourceManager("Resources.DefaultClient.Home", typeof(ResourceFactory).Assembly);
str = resourceManager.GetString("myString");
}
有没有更好的方法知道资源文件是否丢失?
【问题讨论】:
-
您可以尝试使用反射来检查该命名空间和模块是否存在,但是这种尝试捕获方法比花费精力锻炼反射方法要好得多。
标签: c# .net resources resourcemanager