我在堆棧溢出時遇到類似於我的問題:Loop through all Resources in ResourceManager - C#。它只解決了我需要做的一部分。當您在特定文化的資源文件中請求條目時,如果沒有一個文件存在,它將默認回到中性文化資源文件。asp.net獲取.resx的所有資源而不指定文化(ResourceManager.GetResourceSet)
我需要遍歷給定資源文件的每個條目,並且GetResourceSet需要一種文化。例如,我有一箇中立的資源文件,其中有3個條目,文件特定的資源文件伴隨有1個條目的中性文件。
我的中性資源示例文件是MyResource.resx,我的文化特定資源示例文件是MyResource.en-gb.resx。以下代碼顯示了我目前如何循環訪問所有資源條目。
Dim cultInfo as New CultureInfo(culture)
For Each entry As System.Collections.DictionaryEntry In myResourceManager.GetResourceSet(cultInfo, True, True)
Next
中立資源文件條目
- 全名/姓名
- ******中國/電話號碼
- 國家/國家
特定文化資源文件條目
- 州/縣
當我打電話GetResourceSet的特定文化,我只拿回1項。我希望(並希望)能夠重寫所有3個條目,並重寫一個文化特定條目。以下是我想要返回:
- 全名/姓名
- ******中國/電話號碼
- 國家/ 縣
反正是有,我可以做到這一點?謝謝。
我明白這個*解決方法*解決了這個問題,但仍然發現(和我發現的一樣)這個'GetResourceSet'方法的行爲並不能反映[documentation](http://msdn.microsoft.com/zh-cn/)中的內容。 COM/EN-US /庫/ system.resources.resourcemanager.getresourceset(v = VS.100)的.aspx)。 – superjos 2013-08-22 17:41:59
好吧,其實我試過了,在我的情況下它並沒有解決問題。在遍歷resourceSet時,我只獲取特定於語言環境的鍵。該集合根本沒有來自回退資源的密鑰。 :(我仔細檢查了我傳遞了正確的文化,真實,真實。 – superjos 2013-08-22 18:04:51
最後,我這樣管理它:我從'InvariantCulture'創建了一個字典,另一個從'CurrentUICulture'中創建了一個字典,然後我把前者合併後者。 – superjos 2013-08-23 09:25:43