Bagikan melalui


ResXResourceReader Kelas

Definisi

Menghitung file dan aliran sumber daya XML (.resx), dan membaca nama sumber daya berurutan dan pasangan nilai.

public ref class ResXResourceReader : System::Resources::IResourceReader
public ref class ResXResourceReader : IDisposable, System::Collections::IEnumerable, System::Resources::IResourceReader
public class ResXResourceReader : System.Resources.IResourceReader
public class ResXResourceReader : IDisposable, System.Collections.IEnumerable, System.Resources.IResourceReader
type ResXResourceReader = class
    interface IResourceReader
    interface IEnumerable
    interface IDisposable
Public Class ResXResourceReader
Implements IResourceReader
Public Class ResXResourceReader
Implements IDisposable, IEnumerable, IResourceReader
Warisan
ResXResourceReader
Penerapan

Contoh

Contoh berikut menunjukkan cara menggunakan ResXResourceReader untuk melakukan iterasi melalui sumber daya dalam file .resx. Pertama, ResXResourceReaderrsxr dibuat untuk file items.resx. Selanjutnya, metode GetEnumerator digunakan untuk membuat IDictionaryEnumerator untuk melakukan iterasi melalui sumber daya dan menampilkan konten ke konsol.

#using <system.windows.forms.dll>
#using <System.dll>

using namespace System;
using namespace System::Resources;
using namespace System::Collections;
void main()
{

   // Create a ResXResourceReader for the file items.resx.
   ResXResourceReader^ rsxr = gcnew ResXResourceReader( "items.resx" );


   // Iterate through the resources and display the contents to the console.
   IEnumerator^ myEnum = rsxr->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      DictionaryEntry^ d = safe_cast<DictionaryEntry^>(myEnum->Current);
      Console::WriteLine( "{0}:\t {1}", d->Key, d->Value );
   }


   //Close the reader.
   rsxr->Close();
}
using System;
using System.Resources;
using System.Collections;

class ReadResXResources
{
   public static void Main()
   {

      // Create a ResXResourceReader for the file items.resx.
      ResXResourceReader rsxr = new ResXResourceReader("items.resx");

      // Iterate through the resources and display the contents to the console.
      foreach (DictionaryEntry d in rsxr)
      {
    Console.WriteLine(d.Key.ToString() + ":\t" + d.Value.ToString());
      }

     //Close the reader.
     rsxr.Close();
   }
}
Imports System.Resources
Imports System.Collections

Class ReadResXResources
   
   Public Shared Sub Main()
      
      ' Create a ResXResourceReader for the file items.resx.
      Dim rsxr As ResXResourceReader
      rsxr = New ResXResourceReader("items.resx")

      ' Iterate through the resources and display the contents to the console.
      Dim d As DictionaryEntry
      For Each d In  rsxr
         Console.WriteLine(d.Key.ToString() + ":" + ControlChars.Tab + d.Value.ToString())
      Next d
      
      'Close the reader.
      rsxr.Close()

   End Sub

End Class

Keterangan

Penting

Metode panggilan dari kelas ini dengan data yang tidak tepercaya adalah risiko keamanan. Panggil metode dari kelas ini hanya dengan data tepercaya. Untuk informasi selengkapnya, lihat Memvalidasi Semua Input.

Kelas ResXResourceReader menyediakan implementasi default antarmuka IResourceReader yang membaca informasi sumber daya dalam format XML. Untuk membaca informasi sumber daya dari format sumber daya biner, gunakan kelas ResourceReader.

Anda menggunakan kelas ResXResourceReader untuk menghitung sumber daya dalam file .resx dengan melintasi enumerator kamus (IDictionaryEnumerator) yang dikembalikan oleh metode GetEnumerator. Anda memanggil metode yang disediakan oleh IDictionaryEnumerator untuk melanjutkan ke sumber daya berikutnya dan membaca nama dan nilai setiap sumber daya dalam file .resx.

Nota

Kelas ResXResourceReader menyediakan dua enumerator. Metode ResXResourceReader.GetEnumerator mengembalikan objek IDictionaryEnumerator; kami menyarankan agar Anda menggunakan metode ini untuk menghitung sumber daya. Metode ResXResourceReader.IEnumerable.GetEnumerator adalah implementasi antarmuka eksplisit yang mengembalikan objek IEnumerator; kami tidak merekomendasikan penggunaannya.

Contoh berikut menggunakan metode GetEnumerator untuk mendapatkan objek IDictionaryEnumerator yang digunakan untuk menghitung sumber daya dalam file .resx. Contohnya mencakup rutinitas CreateResourceFile yang membuat file sumber daya yang diperlukan.

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

public class Example
{
   private const string resxFilename = @".\CountryHeaders.resx";
    
   public static void Main()
   {
      // Create a resource file to read.
      CreateResourceFile();
      
      // Enumerate the resources in the file.
      ResXResourceReader rr = new ResXResourceReader(resxFilename);
      IDictionaryEnumerator dict = rr.GetEnumerator();
      while (dict.MoveNext())
         Console.WriteLine("{0}: {1}", dict.Key, dict.Value);   
   }

   private static void CreateResourceFile()
   {
      ResXResourceWriter rw = new ResXResourceWriter(resxFilename);
      string[] resNames = {"Country", "Population", "Area", 
                           "Capital", "LCity" };
      string[] columnHeaders = { "Country Name", "Population (2010}", 
                                 "Area", "Capital", "Largest City" };
      string[] comments = { "The localized country name", "", 
                            "The area in square miles", "", 
                            "The largest city based on 2010 data" };
      rw.AddResource("Title", "Country Information");
      rw.AddResource("nColumns", resNames.Length);
      for (int ctr = 0; ctr < resNames.Length; ctr++) {
         ResXDataNode node = new ResXDataNode(resNames[ctr], columnHeaders[ctr]);
         node.Comment = comments[ctr];
         rw.AddResource(node);
      }
      rw.Generate();
      rw.Close();
   }
}
// The example displays the following output:
//       Title: Country Information
//       nColumns: 5
//       Country: Country Name
//       Population: Population (2010}
//       Area: Area
//       Capital: Capital
//       LCity: Largest City
Imports System.Collections
Imports System.Resources

Module Example
   Private Const resxFilename As String = ".\CountryHeaders.resx"
     
   Public Sub Main()
      ' Create a resource file to read.
      CreateResourceFile()
      
      ' Enumerate the resources in the file.
      Dim rr As New ResXResourceReader(resxFilename)
      Dim dict As IDictionaryEnumerator = rr.GetEnumerator()
      Do While dict.MoveNext()
         Console.WriteLine("{0}: {1}", dict.Key, dict.Value)   
      Loop
   End Sub
   
   Private Sub CreateResourceFile()
      Dim rw As New ResxResourceWriter(resxFilename)
      Dim resNames() As String = {"Country", "Population", "Area", 
                                  "Capital", "LCity" }
      Dim columnHeaders() As String = { "Country Name", "Population (2010}", 
                                        "Area", "Capital", "Largest City" }
      Dim comments() As String = { "The localized country name", "", 
                                   "The area in square miles", "", 
                                   "The largest city based on 2010 data" }
      rw.AddResource("Title", "Country Information")
      rw.AddResource("nColumns", resNames.Length)
      For ctr As Integer = 0 To resNames.Length - 1
         Dim node As New ResXDataNode(resNames(ctr), columnHeaders(ctr))
         node.Comment = comments(ctr)
         rw.AddResource(node)
      Next
      rw.Generate()
      rw.Close()
   End Sub
End Module
' The example displays the following output:
'       Title: Country Information
'       nColumns: 5
'       Country: Country Name
'       Population: Population (2010}
'       Area: Area
'       Capital: Capital
'       LCity: Largest City

Jika properti UseResXDataNodestrue, nilai properti IDictionaryEnumerator.Value adalah objek ResXDataNode daripada nilai sumber daya. Ini membuat komentar item sumber daya tersedia dari properti ResXDataNode.Comment. Contoh berikut mengatur properti UseResXDataNodes ke true dan menghitung sumber daya dalam file .resx,

using System;
using System.Collections;
using System.ComponentModel.Design;
using System.Resources;

public class Example
{
   private const string resxFilename = @".\CountryHeaders.resx";
    
   public static void Main()
   {
      // Create a resource file to read.
      CreateResourceFile();
      
      // Enumerate the resources in the file.
      ResXResourceReader rr = new ResXResourceReader(resxFilename);
      rr.UseResXDataNodes = true;
      IDictionaryEnumerator dict = rr.GetEnumerator();
      while (dict.MoveNext()) {
         ResXDataNode node = (ResXDataNode) dict.Value;
         Console.WriteLine("{0,-20} {1,-20} {2}", 
                           node.Name + ":", 
                           node.GetValue((ITypeResolutionService) null), 
                           ! String.IsNullOrEmpty(node.Comment) ? "// " + node.Comment : "");
      }
   }

   private static void CreateResourceFile()
   {
      ResXResourceWriter rw = new ResXResourceWriter(resxFilename);
      string[] resNames = {"Country", "Population", "Area", 
                           "Capital", "LCity" };
      string[] columnHeaders = { "Country Name", "Population (2010}", 
                                 "Area", "Capital", "Largest City" };
      string[] comments = { "The localized country name", "", 
                            "The area in square miles", "", 
                            "The largest city based on 2010 data" };
      rw.AddResource("Title", "Country Information");
      rw.AddResource("nColumns", resNames.Length);
      for (int ctr = 0; ctr < resNames.Length; ctr++) {
         ResXDataNode node = new ResXDataNode(resNames[ctr], columnHeaders[ctr]);
         node.Comment = comments[ctr];
         rw.AddResource(node);
      }
      rw.Generate();
      rw.Close();
   }
}
// The example displays the following output:
//    Title:               Country Information
//    nColumns:            5
//    Country:             Country Name         // The localized country name
//    Population:          Population (2010}
//    Area:                Area                 // The area in square miles
//    Capital:             Capital
//    LCity:               Largest City         // The largest city based on 2010 data
Imports System.Collections
Imports System.ComponentModel.Design
Imports System.Resources

Module Example
   Private Const resxFilename As String = ".\CountryHeaders.resx"
     
   Public Sub Main()
      ' Create a resource file to read.
      CreateResourceFile()
      
      ' Enumerate the resources in the file.
      Dim rr As New ResXResourceReader(resxFilename)
      rr.UseResXDataNodes = True
      Dim dict As IDictionaryEnumerator = rr.GetEnumerator()
      Do While dict.MoveNext()
         Dim node As ResXDataNode = DirectCast(dict.Value, ResXDataNode)
         Console.WriteLine("{0,-20} {1,-20} {2}", 
                           node.Name + ":", 
                           node.GetValue(CType(Nothing, ITypeResolutionService)), 
                           If(Not String.IsNullOrEmpty(node.Comment), "// " + node.Comment, ""))
      Loop
   End Sub
   
   Private Sub CreateResourceFile()
      Dim rw As New ResxResourceWriter(resxFilename)
      Dim resNames() As String = {"Country", "Population", "Area", 
                                  "Capital", "LCity" }
      Dim columnHeaders() As String = { "Country Name", "Population (2010}", 
                                        "Area", "Capital", "Largest City" }
      Dim comments() As String = { "The localized country name", "", 
                                   "The area in square miles", "", 
                                   "The largest city based on 2010 data" }
      rw.AddResource("Title", "Country Information")
      rw.AddResource("nColumns", resNames.Length)
      For ctr As Integer = 0 To resNames.Length - 1
         Dim node As New ResXDataNode(resNames(ctr), columnHeaders(ctr))
         node.Comment = comments(ctr)
         rw.AddResource(node)
      Next
      rw.Generate()
      rw.Close()
   End Sub
End Module
' The example displays the following output:
'    Title:               Country Information
'    nColumns:            5
'    Country:             Country Name         // The localized country name
'    Population:          Population (2010}
'    Area:                Area                 // The area in square miles
'    Capital:             Capital
'    LCity:               Largest City         // The largest city based on 2010 data

Jika UseResXDataNodestrue, item ResXDataNode dalam enumerasi dapat berupa:

  • Sumber daya bernama bersama dengan data mereka. Dalam hal ini, properti ResXDataNode.FileRefnull.

  • Sumber daya bernama bersama dengan nama file yang berisi data sumber daya. Dalam hal ini, properti ResXDataNode.FileRef mengembalikan objek ResXFileRef yang menyediakan informasi tentang sumber daya, termasuk nama filenya. Jika nama file relatif digunakan, Anda harus selalu mengatur properti BasePath untuk menyediakan titik referensi untuk jalur file relatif.

Jika Anda ingin mengambil sumber daya bernama dari file .resx daripada menghitung sumber dayanya, Anda dapat membuat instans objek ResXResourceSet dan memanggil metode GetString dan GetObject.

Nota

Kelas ResXResourceReader berisi permintaan tautan dan permintaan warisan di tingkat kelas yang berlaku untuk semua anggota. Pengecualian SecurityException dilemparkan ketika pemanggil langsung atau kelas turunan tidak memiliki izin kepercayaan penuh.

Konstruktor

ResXResourceReader(Stream)

Menginisialisasi instans baru kelas ResXResourceReader untuk aliran yang ditentukan.

ResXResourceReader(Stream, AssemblyName[])

Menginisialisasi instans baru kelas ResXResourceReader menggunakan aliran dan array nama rakitan.

ResXResourceReader(Stream, ITypeResolutionService)

Menginisialisasi instans baru kelas ResXResourceReader menggunakan aliran input dan layanan resolusi jenis.

ResXResourceReader(String)

Menginisialisasi instans baru kelas ResXResourceReader untuk file sumber daya yang ditentukan.

ResXResourceReader(String, AssemblyName[])

Menginisialisasi instans baru kelas ResXResourceReader menggunakan nama file sumber daya XML dan array nama rakitan.

ResXResourceReader(String, ITypeResolutionService)

Menginisialisasi instans baru kelas ResXResourceReader menggunakan nama file dan layanan resolusi jenis.

ResXResourceReader(TextReader)

Menginisialisasi instans baru kelas ResXResourceReader untuk TextReaderyang ditentukan .

ResXResourceReader(TextReader, AssemblyName[])

Menginisialisasi instans baru kelas ResXResourceReader menggunakan objek TextReader dan array nama rakitan.

ResXResourceReader(TextReader, ITypeResolutionService)

Menginisialisasi instans baru kelas ResXResourceReader menggunakan pembaca aliran teks dan layanan resolusi jenis.

Properti

BasePath

Mendapatkan atau mengatur jalur dasar untuk jalur file relatif yang ditentukan dalam objek ResXFileRef.

UseResXDataNodes

Mendapatkan atau menetapkan nilai yang menunjukkan apakah objek ResXDataNode dikembalikan saat membaca file atau aliran sumber daya XML saat ini.

Metode

Close()

Merilis semua sumber daya yang digunakan oleh ResXResourceReader.

Dispose(Boolean)

Merilis sumber daya yang tidak dikelola yang digunakan oleh ResXResourceReader dan secara opsional merilis sumber daya terkelola.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Finalize()

Anggota ini mengambil alih metode Finalize().

FromFileContents(String)

Membuat objek ResXResourceReader baru dan menginisialisasinya untuk membaca string yang kontennya dalam bentuk file sumber daya XML.

FromFileContents(String, AssemblyName[])

Membuat objek ResXResourceReader baru dan menginisialisasinya untuk membaca string yang kontennya dalam bentuk file sumber daya XML, dan untuk menggunakan array objek AssemblyName untuk mengatasi nama jenis yang ditentukan dalam sumber daya.

FromFileContents(String, ITypeResolutionService)

Membuat objek ResXResourceReader baru dan menginisialisasinya untuk membaca string yang kontennya dalam bentuk file sumber daya XML, dan untuk menggunakan objek ITypeResolutionService untuk mengatasi nama jenis yang ditentukan dalam sumber daya.

GetEnumerator()

Mengembalikan enumerator untuk objek ResXResourceReader saat ini.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetMetadataEnumerator()

Menyediakan enumerator kamus yang dapat mengambil properti waktu desain dari file sumber daya XML atau aliran saat ini.

GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

IDisposable.Dispose()

Merilis sumber daya yang tidak dikelola yang digunakan oleh ResXResourceReader dan secara opsional merilis sumber daya terkelola. Untuk deskripsi anggota ini, lihat metode Dispose().

IEnumerable.GetEnumerator()

Mengembalikan enumerator untuk objek ResXResourceReader saat ini. Untuk deskripsi anggota ini, lihat metode GetEnumerator().

Metode Ekstensi

Cast<TResult>(IEnumerable)

Melemparkan elemen IEnumerable ke jenis yang ditentukan.

OfType<TResult>(IEnumerable)

Memfilter elemen IEnumerable berdasarkan jenis tertentu.

AsParallel(IEnumerable)

Mengaktifkan paralelisasi kueri.

AsQueryable(IEnumerable)

Mengonversi IEnumerable menjadi IQueryable.

Berlaku untuk

Lihat juga