您可以通過以下得到的資源鍵的值:如何從本地化的字符串值獲取資源的密鑰?
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) –