到寫本文時為止,即使空的 .resx 文件也是 42 行 XML,而其中大多數是架構信息。架構允許 .resx 文件中有任意數目的項,每項都有名稱、值、注釋、類型和 MIME 類型。圖 5 顯示了有兩個項的 .resx 文件,即名為 MyString 的字符串和名為 MyImage 的圖像。

圖 5. 設計器的數據視圖中簡單的 .resx 文件
遺憾的是,只有字符串項能夠在 .resx 編輯器的數據視圖中實際進行編輯。任何二進制數據都需要手動直接輸入到 XML 中(而且只能是 base64 編碼)。因此,直接使用 .resx 文件只對字符串資源有用(盡管間接使用會使 .resx 文件對任何種類的數據都非常有用,我們隨后將討論這一點)。
來自 System.Resources 命名空間的 ResXResourceReader 類將分析 XML 文件,并公開一組命名的、有類型的值。要取得具體的項需要查找它:
using System.Collections;using System.Resources;...public Form1() { ... using( ResXResourceReader reader = new ResXResourceReader(@"Resource1.resx") ) { foreach( DictionaryEntry entry in reader ) { if( entry.Key.ToString() == "MyString" ) { // Set form caption from string resource this.Text = entry.Value.ToString(); } } }}
使用 Add New Item 對話框將 .resx 文件添加到項目中會使該文件作為 Embedded Resource 添加進項目,而編譯項目時則會導致 .resx 數據作為嵌套資源 嵌入(“嵌套資源”是分組到命名容器中的資源)。容器的名稱與作為資源添加的任何文件相同,只是不使用 .resx 擴展名,使用 .resource 擴展名。假定一個項目的默認命名空間是 ResourcesApp 而 .resx 文件名為 Resources1.resx,則嵌套資源的容器名為 ResourcesApp.Resources1.resx,如圖 6 中的 ildasm 所示。

圖 6. 嵌入的 .resources 文件
文章來源于領測軟件測試網 http://www.kjueaiud.com/