您可以通过以下得到的资源键的值:如何从本地化的字符串值获取资源的密钥?
string s = Namespace.ResourceLocation.ResourceFile.KeyName;
有没有一种方式来获得一个字符串值的键名?
您可以通过以下得到的资源键的值:如何从本地化的字符串值获取资源的密钥?
string s = Namespace.ResourceLocation.ResourceFile.KeyName;
有没有一种方式来获得一个字符串值的键名?
您可以迭代资源文件并使用该值获取键名。
using System.Resources;
using (ResXResourceReader oReader = new ResXResourceReader(ResourceFilePath))
{
IDictionaryEnumerator oResource = oReader.GetEnumerator();
while (oResource.MoveNext())
{
if (oResource.Value.ToString() == "VALUE")
return oResource.Key.ToString();
}
}
这里只是一个注释 - 如果resx文件被编译到程序集中,这不起作用 - 物理resx文件在发布时需要保留为项目的一部分。 – RemarkLima
@RemarkLima很高兴知道谢谢 –
为了完整起见,从inquisitive_mind的答案,我结束了:
var resDict = StronglyTypedResource
.ResourceManager
.GetResourceSet(CultureInfo.InvariantCulture, true, false)
.Cast<DictionaryEntry>()
.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString());
为了让我的强类型的资源文件转换成字典 - 我最初错过了位是使createIfNotExists
加载资源文件。
然后只需查询字典:
entity.ResourceKeyValue =
resDict.First(x => x.Value.ToLower() == stringValue.Trim().ToLower()).Key;
查找在字典值键不保证唯一的结果......你能不能请你澄清你为什么需要呢? (可能只是使用资源名称而不是预编译访问器在你的情况下会更好)。 –
这是一个奇怪的球情况。有许多不同的翻译代码,但是数据是通过英国英语价值引入系统的 - 然后数据需要以选定的最终用户语言显示。显示数据的最佳方式是使用资源文件 - 只有在引入阶段我才能查找原始代码。在这种情况下,他们被保证是唯一的 – RemarkLima
如果你从字符串开始,你为什么要尝试一些奇怪的操作,而不是仅仅通过该值获取资源字符串? (http://stackoverflow.com/questions/7644796/read-value-from-resource-file-using-string) –