ResXResourceSet 類別

定義

表示 XML 資源 (.resx) 檔中的所有資源。

public ref class ResXResourceSet : System::Resources::ResourceSet
public class ResXResourceSet : System.Resources.ResourceSet
type ResXResourceSet = class
    inherit ResourceSet
Public Class ResXResourceSet
Inherits ResourceSet
繼承
ResXResourceSet

範例

下列範例會具現化 ResXResourceSet 物件,並說明如何列舉其資源,並依名稱擷取個別資源。 針對其列舉的每個資源,此範例會根據資源的值是字串或物件,在呼叫 GetStringGetObject 方法時使用 IDictionaryEnumerator.Key 屬性。

using System;
using System.Collections;
using System.Drawing;
using System.Resources;

public class Example
{
   public static void Main()
   {
      CreateResXFile();
      
      ResXResourceSet resSet = new ResXResourceSet(@".\StoreResources.resx");
      IDictionaryEnumerator dict = resSet.GetEnumerator();
      while (dict.MoveNext()) {
         string key = (string) dict.Key;
         // Retrieve resource by name.
         if (dict.Value is string)
            Console.WriteLine("{0}: {1}", key, resSet.GetString(key));
         else
            Console.WriteLine("{0}: {1}", key, resSet.GetObject(key));   
      }
   }

   private static void CreateResXFile()
   {
      Bitmap logo = new Bitmap(@".\Logo.bmp");
      ResXDataNode node;
      
      ResXResourceWriter rw = new ResXResourceWriter(@".\StoreResources.resx");
      node = new ResXDataNode("Logo", logo);
      node.Comment = "The corporate logo.";
      rw.AddResource(node); 
      rw.AddResource("AppTitle", "Store Locations");
      node = new ResXDataNode("nColumns", 5);
      node.Comment = "The number of columns in the Store Location table";
      rw.AddResource(node);
      rw.AddResource("City", "City");
      rw.AddResource("State", "State");
      rw.AddResource("Code", "Zip Code");
      rw.AddResource("Telephone", "Phone");
      rw.Generate();
      rw.Close();
   }
}
// The example displays the following output:
//       Telephone: Phone
//       Code: Zip Code
//       State: State
//       City: City
//       nColumns: 5
//       AppTitle: Store Locations
//       Logo: System.Drawing.Bitmap
Imports System.Collections
Imports System.Drawing
Imports System.Resources

Module Example
   Public Sub Main()
      CreateResXFile()
      
      Dim resSet As New ResXResourceSet(".\StoreResources.resx")
      Dim dict As IDictionaryEnumerator = resSet.GetEnumerator()
      Do While dict.MoveNext()
         Dim key As String = CStr(dict.Key)
         ' Retrieve resource by name.
         If typeof dict.Value Is String Then
            Console.WriteLine("{0}: {1}", key, resSet.GetString(key))
         Else
            Console.WriteLine("{0}: {1}", key, resSet.GetObject(key))   
         End If
      Loop
   End Sub
   
   Private Sub CreateResXFile()
      Dim logo As New Bitmap(".\Logo.bmp")
      Dim node As ResXDataNode
      
      Dim rw As New ResXResourceWriter(".\StoreResources.resx")
      node = New ResXDataNode("Logo", logo)
      node.Comment = "The corporate logo."
      rw.AddResource(node) 
      rw.AddResource("AppTitle", "Store Locations")
      node = New ResXDataNode("nColumns", 5)
      node.Comment = "The number of columns in the Store Location table"
      rw.AddResource(node)
      rw.AddResource("City", "City")
      rw.AddResource("State", "State")
      rw.AddResource("Code", "Zip Code")
      rw.AddResource("Telephone", "Phone")
      rw.Generate()
      rw.Close()
   End Sub
End Module
' The example displays the following output:
'       Telephone: Phone
'       Code: Zip Code
'       State: State
'       City: City
'       nColumns: 5
'       AppTitle: Store Locations
'       Logo: System.Drawing.Bitmap

此範例會 CreateResXFile 呼叫 方法來建立必要的 XML 資源檔。 在範例執行所在的目錄中,它需要名為 Logo.bmp 的位圖檔案。

備註

重要

使用不信任的資料呼叫此類別的方法,會造成安全性上的風險。 呼叫此類別的方法時,請一律使用信任的資料。 如需詳細資訊,請參閱 驗證所有輸入

類別 ResXResourceSet 會列舉 IResourceReader、載入每個名稱和值,並將其儲存在哈希表中。 然後,您可以列舉 物件中的 ResXResourceSet 資源,或依名稱擷取個別資源。

ResXResourceSet物件提供方便的方式,將 .resx 檔案中的所有資源讀取到記憶體中。 當 .resx 檔案已讀取到 ResXResourceSet 實例時,您可以使用 GetObject 方法來擷取特定資源。

給繼承者的注意事項

使用自己的資源讀取器和寫入器的衍生類別 ResXResourceSet 應該覆寫 GetDefaultReader()GetDefaultWriter() 方法,以提供適當的功能來解譯 ResXResourceSet 實例。

建構函式

ResXResourceSet(Stream)

使用系統預設的 ResXResourceReader 從指定資料流讀取資源,初始化 ResXResourceSet 類別的新執行個體。

ResXResourceSet(String)

使用系統預設值ResXResourceReader,從指定的檔案開啟和讀取資源,初始化 類別的新實例ResXResourceSet

欄位

Reader

表示用來讀取資源的 IResourceReader

(繼承來源 ResourceSet)
Table

用來儲存資源的 Hashtable

(繼承來源 ResourceSet)

方法

Close()

關閉並釋出這個 ResourceSet 所使用的任何資源。

(繼承來源 ResourceSet)
Dispose()

處置 ResourceSet 之目前執行個體所使用的資源 (除了記憶體之外)。

(繼承來源 ResourceSet)
Dispose(Boolean)

將與目前執行個體相關聯的資源 (除了記憶體以外) 釋出,並於要求時關閉內部 Managed 物件。

(繼承來源 ResourceSet)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetDefaultReader()

傳回這種 ResXResourceSet 的慣用資源讀取器類別。

GetDefaultWriter()

傳回這種 ResXResourceSet 的慣用資源寫入器類別。

GetEnumerator()

傳回可以逐一查看 ResourceSetIDictionaryEnumerator

(繼承來源 ResourceSet)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetObject(String)

以指定的名稱搜尋資源物件。

(繼承來源 ResourceSet)
GetObject(String, Boolean)

如果要求的話,以不區分大小寫的指定名稱搜尋資源物件。

(繼承來源 ResourceSet)
GetString(String)

以指定的名稱搜尋 String 資源。

(繼承來源 ResourceSet)
GetString(String, Boolean)

如果要求的話,以不區分大小寫的指定名稱搜尋 String 資源。

(繼承來源 ResourceSet)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ReadResources()

讀取所有資源,並將它們儲存在 Hashtable 屬性指定的 Table 中。

(繼承來源 ResourceSet)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

明確介面實作

IEnumerable.GetEnumerator()

傳回 IEnumerator 物件,以避免與 Dispose 發生競爭情況。 這個成員並不適合直接從程式碼使用。

(繼承來源 ResourceSet)

擴充方法

Cast<TResult>(IEnumerable)

IEnumerable 的項目轉換成指定的型別。

OfType<TResult>(IEnumerable)

根據指定的型別來篩選 IEnumerable 的項目。

AsParallel(IEnumerable)

啟用查詢的平行化作業。

AsQueryable(IEnumerable)

IEnumerable 轉換成 IQueryable

適用於

另請參閱