ResXResourceReader Osztály

Definíció

Számba adja az XML-erőforrások (.resx) fájljait és streameit, és beolvassa a szekvenciális erőforrás nevét és értékpárjait.

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
Öröklődés
ResXResourceReader
Megvalósítás

Példák

Az alábbi példa bemutatja, hogyan használható egy ResXResourceReader .resx fájl erőforrásain keresztüli iterálásra. Először a ResXResourceReaderrsxr fájlhoz items.resxjön létre. Ezután a GetEnumerator metódussal létrehozunk egy IDictionaryEnumerator iterátumot az erőforrásokon keresztül, és megjelenítse a tartalmat a konzolon.

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

Megjegyzések

Important

Az osztályból származó metódusok nem megbízható adatokkal való meghívása biztonsági kockázatot jelent. Csak megbízható adatokkal hívja meg ennek az osztálynak a metódusait. További információ: Minden bemenet ellenőrzése.

Az ResXResourceReader osztály az erőforrás-információkat XML formátumban beolvasó felület alapértelmezett implementációját IResourceReader biztosítja. Ha bináris erőforrásformátumból szeretné beolvasni az erőforrás-információkat, használja az osztályt ResourceReader .

Az osztály segítségével számba kell adnia az ResXResourceReader erőforrásokat a .resx fájlokban a metódus által visszaadott szótár-számozó (IDictionaryEnumerator) bejárásával GetEnumerator . Meghívja a következő erőforráshoz való továbblépéshez és a .resx fájlban található egyes erőforrások nevének és értékének beolvasásához megadott IDictionaryEnumerator metódusokat.

Note

Az ResXResourceReader osztály két enumerátort biztosít. A ResXResourceReader.GetEnumerator metódus egy IDictionaryEnumerator objektumot ad vissza. Javasoljuk, hogy ezt a módszert használja az erőforrások számbavételéhez. A ResXResourceReader.IEnumerable.GetEnumerator módszer egy explicit felületi implementáció, amely egy IEnumerator objektumot ad vissza, nem javasoljuk a használatát.

Az alábbi példa egy GetEnumerator .resx fájl erőforrásainak számbavételéhez használt objektum beszerzésére IDictionaryEnumerator használja a metódust. A példa tartalmaz egy rutint CreateResourceFile , amely létrehozza a szükséges erőforrásfájlt.

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

Ha a UseResXDataNodes tulajdonság az true, akkor a IDictionaryEnumerator.Value tulajdonság értéke nem az erőforrásérték, hanem egy ResXDataNode objektum. Így egy erőforráselem megjegyzése elérhetővé válik a ResXDataNode.Comment tulajdonságból. Az alábbi példa egy UseResXDataNodes .resx fájl erőforrásait true állítja be és sorolja fel a tulajdonságot.

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

Ha UseResXDataNodes igen true, az ResXDataNode enumerálás elemei a következők lehetnek:

  • Elnevezett erőforrások az adataikkal együtt. Ebben az esetben a ResXDataNode.FileRef tulajdonság null.

  • Elnevezett erőforrások az erőforrásadatokat tartalmazó fájl nevével együtt. Ebben az esetben a ResXDataNode.FileRef tulajdonság egy ResXFileRef olyan objektumot ad vissza, amely információt nyújt az erőforrásról, beleértve a fájlnevét is. Ha relatív fájlneveket használ, a tulajdonságot mindig úgy kell beállítania BasePath , hogy referenciapontot adjon a relatív fájl elérési útjának.

Ha az erőforrások számbavétele helyett elnevezett erőforrásokat szeretne lekérni egy .resx fájlból, példányosíthat egy ResXResourceSet objektumot, és meghívhatja azokat és GetString a GetObject metódusokat.

Note

Az ResXResourceReader osztály az összes tagra vonatkozó hivatkozási és öröklési igényt tartalmaz az osztály szintjén. Kivétel SecurityException akkor lép fel, ha az azonnali hívó vagy a származtatott osztály nem rendelkezik teljes megbízhatósági engedéllyel.

Konstruktorok

Name Description
ResXResourceReader(Stream, AssemblyName[])

Inicializálja az ResXResourceReader osztály új példányát egy stream és egy szerelvénynevek tömbje használatával.

ResXResourceReader(Stream, ITypeResolutionService)

Inicializálja az ResXResourceReader osztály új példányát egy bemeneti stream és egy típusfeloldási szolgáltatás használatával.

ResXResourceReader(Stream)

Inicializálja a ResXResourceReader megadott stream osztályának új példányát.

ResXResourceReader(String, AssemblyName[])

Inicializálja az ResXResourceReader osztály új példányát EGY XML-erőforrásfájlnév és egy szerelvénynevek tömbje használatával.

ResXResourceReader(String, ITypeResolutionService)

Inicializálja az ResXResourceReader osztály új példányát egy fájlnév és egy típusfeloldási szolgáltatás használatával.

ResXResourceReader(String)

Inicializálja a ResXResourceReader megadott erőforrásfájl osztályának új példányát.

ResXResourceReader(TextReader, AssemblyName[])

Inicializálja az ResXResourceReader osztály új példányát egy objektum és egy TextReader szerelvénynevek tömbje használatával.

ResXResourceReader(TextReader, ITypeResolutionService)

Inicializálja az ResXResourceReader osztály új példányát egy szövegstream-olvasó és egy típusfeloldási szolgáltatás használatával.

ResXResourceReader(TextReader)

Inicializálja a ResXResourceReader megadott TextReaderosztály új példányát.

Tulajdonságok

Name Description
BasePath

Lekéri vagy beállítja az objektumban ResXFileRef megadott relatív fájl elérési útjának alap elérési útját.

UseResXDataNodes

Lekéri vagy beállítja azt az értéket, amely jelzi, hogy az aktuális XML-erőforrásfájl vagy -adatfolyam olvasásakor visszaadott-e ResXDataNode objektumokat.

Metódusok

Name Description
Close()

Felszabadítja a .-hez használt összes erőforrást ResXResourceReader.

Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által ResXResourceReader használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
Finalize()

Ez a tag felülírja a metódust Finalize() .

FromFileContents(String, AssemblyName[])

Létrehoz egy új ResXResourceReader objektumot, és inicializálja egy olyan sztring olvasásához, amelynek tartalma XML-erőforrásfájl formájában van, és objektumtömb AssemblyName használatával oldja fel az erőforrásban megadott típusneveket.

FromFileContents(String, ITypeResolutionService)

Létrehoz egy új ResXResourceReader objektumot, és inicializálja azt egy XML-erőforrásfájl formájában található sztring olvasásához, és egy objektum használatával ITypeResolutionService feloldja az erőforrásban megadott típusneveket.

FromFileContents(String)

Létrehoz egy új ResXResourceReader objektumot, és inicializálja egy olyan sztring olvasásához, amelynek tartalma XML-erőforrásfájl formájában van.

GetEnumerator()

Az aktuális ResXResourceReader objektum enumerátorát adja vissza.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetMetadataEnumerator()

Szótár-enumerátort biztosít, amely lekérheti a tervezési idő tulajdonságait az aktuális XML-erőforrásfájlból vagy -adatfolyamból.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

Name Description
IDisposable.Dispose()

Felszabadítja a felügyelt erőforrások által ResXResourceReader használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat. Ennek a tagnak a leírását a Dispose() metódus ismerteti.

IEnumerable.GetEnumerator()

Az aktuális ResXResourceReader objektum enumerátorát adja vissza. Ennek a tagnak a leírását a GetEnumerator() metódus ismerteti.

Bővítő metódusok

Name Description
AsParallel(IEnumerable)

Lehetővé teszi a lekérdezés párhuzamosítását.

AsQueryable(IEnumerable)

Átalakítja az egyiket IEnumerableIQueryable.

Cast<TResult>(IEnumerable)

Egy elem elemeit IEnumerable a megadott típusra veti.

OfType<TResult>(IEnumerable)

Egy adott típus alapján szűri IEnumerable egy adott elem elemeit.

A következőre érvényes:

Lásd még