ResXResourceReader Clase

Definición

Enumera las secuencias y archivos de recursos XML (.resx) y lee los pares secuenciales nombre-valor de los recursos.Enumerates XML resource (.resx) files and streams, and reads the sequential resource name and value pairs.

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
Herencia
ResXResourceReader
Implementaciones

Ejemplos

En el ejemplo siguiente se muestra cómo utilizar un ResXResourceReader para recorrer en iteración los recursos de un archivo. resx.The following example demonstrates how to use a ResXResourceReader to iterate through the resources in a .resx file. En primer lugar, ResXResourceReader rsxr se crea para el archivo items.resx .First, the ResXResourceReaderrsxr is created for the file items.resx. A continuación, GetEnumerator se usa el método para crear un IDictionaryEnumerator para recorrer en iteración los recursos y mostrar el contenido en la consola.Next, the GetEnumerator method is used to create an IDictionaryEnumerator to iterate through the resources and display the contents to the console.

#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

Comentarios

La ResXResourceReader clase proporciona una implementación predeterminada de la IResourceReader interfaz que lee la información de recursos en formato XML.The ResXResourceReader class provides a default implementation of the IResourceReader interface that reads resource information in an XML format. Para leer la información de recursos desde un formato de recursos binarios, use la ResourceReader clase.To read resource information from a binary resource format, use the ResourceReader class.

Utilice la ResXResourceReader clase para enumerar los recursos de los archivos. resx recorriendo el enumerador del diccionario ( IDictionaryEnumerator ) devuelto por el GetEnumerator método.You use the ResXResourceReader class to enumerate resources in .resx files by traversing the dictionary enumerator (IDictionaryEnumerator) that is returned by the GetEnumerator method. Llame a los métodos proporcionados por IDictionaryEnumerator para avanzar al siguiente recurso y leer el nombre y el valor de cada recurso en el archivo. resx.You call the methods provided by IDictionaryEnumerator to advance to the next resource and to read the name and value of each resource in the .resx file.

Nota

La ResXResourceReader clase proporciona dos enumeradores.The ResXResourceReader class provides two enumerators. El ResXResourceReader.GetEnumerator método devuelve un IDictionaryEnumerator objeto; se recomienda usar este método para enumerar los recursos.The ResXResourceReader.GetEnumerator method returns an IDictionaryEnumerator object; we recommend that you use this method to enumerate resources. El ResXResourceReader.IEnumerable.GetEnumerator método es una implementación de interfaz explícita que devuelve un IEnumerator objeto; no se recomienda su uso.The ResXResourceReader.IEnumerable.GetEnumerator method is an explicit interface implementation that returns an IEnumerator object; we do not recommend its use.

En el ejemplo siguiente se utiliza el GetEnumerator método para obtener un IDictionaryEnumerator objeto que se utiliza para enumerar los recursos de un archivo. resx.The following example uses the GetEnumerator method to obtain an IDictionaryEnumerator object that is used to enumerate the resources in a .resx file. En el ejemplo se incluye una CreateResourceFile rutina que crea el archivo de recursos necesario.The example includes a CreateResourceFile routine that creates the necessary resource file.

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

Si la UseResXDataNodes propiedad es true , el valor de la IDictionaryEnumerator.Value propiedad es un ResXDataNode objeto en lugar del valor del recurso.If the UseResXDataNodes property is true, the value of the IDictionaryEnumerator.Value property is a ResXDataNode object rather than the resource value. Esto hace que el comentario de un elemento de recurso esté disponible desde la ResXDataNode.Comment propiedad.This makes a resource item's comment available from the ResXDataNode.Comment property. En el ejemplo siguiente se establece la UseResXDataNodes propiedad en true y se enumeran los recursos en un archivo. resx,The following example sets the UseResXDataNodes property to true and enumerates the resources in a .resx file,

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

Si UseResXDataNodes es true , los ResXDataNode elementos de la enumeración pueden ser:If UseResXDataNodes is true, the ResXDataNode items in the enumeration can be either:

  • Recursos con nombre junto con sus datos.Named resources along with their data. En este caso, la ResXDataNode.FileRef propiedad es null .In this case, the ResXDataNode.FileRef property is null.

  • Recursos con nombre junto con el nombre del archivo que contiene los datos del recurso.Named resources along with the name of the file that contains the resource data. En este caso, la ResXDataNode.FileRef propiedad devuelve un ResXFileRef objeto que proporciona información sobre el recurso, incluido su nombre de archivo.In this case, the ResXDataNode.FileRef property returns a ResXFileRef object that provides information about the resource, including its filename. Si se usan nombres de archivo relativos, siempre debe establecer la BasePath propiedad para proporcionar un punto de referencia para la ruta de acceso relativa al archivo.If relative file names are used, you should always set the BasePath property to provide a reference point for the relative file path.

Si desea recuperar recursos con nombre de un archivo. resx en lugar de enumerar sus recursos, puede crear instancias de un ResXResourceSet objeto y llamar a GetString sus GetObject métodos y.If you want to retrieve named resources from a .resx file rather than enumerating its resources, you can instantiate a ResXResourceSet object and call its GetString and GetObject methods.

Nota

La ResXResourceReader clase contiene una petición de vínculo y una petición de herencia en el nivel de clase que se aplica a todos los miembros.The ResXResourceReader class contains a link demand and an inheritance demand at the class level that applies to all members. SecurityExceptionSe produce una excepción cuando el llamador inmediato o la clase derivada no tienen permiso de plena confianza.A SecurityException exception is thrown when either the immediate caller or the derived class does not have full-trust permission.

Constructores

ResXResourceReader(Stream)

Inicializa una nueva instancia de la clase ResXResourceReader para el flujo especificado.Initializes a new instance of the ResXResourceReader class for the specified stream.

ResXResourceReader(Stream, AssemblyName[])

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un flujo y una matriz de nombres de ensamblado.Initializes a new instance of the ResXResourceReader class using a stream and an array of assembly names.

ResXResourceReader(Stream, ITypeResolutionService)

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un flujo de entrada y un servicio de resolución de tipos.Initializes a new instance of the ResXResourceReader class using an input stream and a type resolution service.

ResXResourceReader(String)

Inicializa una nueva instancia de la clase ResXResourceReader para el archivo de recursos especificado.Initializes a new instance of the ResXResourceReader class for the specified resource file.

ResXResourceReader(String, AssemblyName[])

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un nombre de archivo de recursos XML y una matriz de nombres de ensamblado.Initializes a new instance of the ResXResourceReader class using an XML resource file name and an array of assembly names.

ResXResourceReader(String, ITypeResolutionService)

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un nombre de archivo y un servicio de resolución de tipos.Initializes a new instance of the ResXResourceReader class using a file name and a type resolution service.

ResXResourceReader(TextReader)

Inicializa una nueva instancia de la clase ResXResourceReader para el objetoTextReader especificado.Initializes a new instance of the ResXResourceReader class for the specified TextReader.

ResXResourceReader(TextReader, AssemblyName[])

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un objeto TextReader y una matriz de nombres de ensamblado.Initializes a new instance of the ResXResourceReader class using a TextReader object and an array of assembly names.

ResXResourceReader(TextReader, ITypeResolutionService)

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un lector de secuencias de texto y un servicio de resolución de tipos.Initializes a new instance of the ResXResourceReader class using a text stream reader and a type resolution service.

Propiedades

BasePath

Obtiene o establece la ruta de acceso base para la ruta de acceso relativa al archivo especificada en un objeto ResXFileRef.Gets or sets the base path for the relative file path specified in a ResXFileRef object.

UseResXDataNodes

Obtiene o establece un valor que indica si se devuelven objetos ResXDataNode al leer la secuencia o archivo de recursos XML actual.Gets or sets a value that indicates whether ResXDataNode objects are returned when reading the current XML resource file or stream.

Métodos

Close()

Libera todos los recursos que usa ResXResourceReader.Releases all resources used by the ResXResourceReader.

Dispose(Boolean)

Libera los recursos no administrados que usa ResXResourceReader y, de forma opcional, libera los recursos administrados.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
Finalize()

Este miembro reemplaza el método Finalize().This member overrides the Finalize() method.

FromFileContents(String)

Crea un nuevo objeto ResXResourceReader y lo inicializa para leer una cadena cuyo contenido está en forma de archivo de recursos XML.Creates a new ResXResourceReader object and initializes it to read a string whose contents are in the form of an XML resource file.

FromFileContents(String, AssemblyName[])

Crea un nuevo objeto ResXResourceReader y lo inicializa para leer una cadena cuyo contenido está en forma de archivo de recursos XML y para utilizar una matriz de objetos AssemblyName con el fin de resolver los nombres de tipo especificados en un recurso.Creates a new ResXResourceReader object and initializes it to read a string whose contents are in the form of an XML resource file, and to use an array of AssemblyName objects to resolve type names specified in a resource.

FromFileContents(String, ITypeResolutionService)

Crea un nuevo objeto ResXResourceReader y lo inicializa para leer una cadena cuyo contenido está en forma de archivo de recursos XML y para utilizar un objeto ITypeResolutionService con el fin de resolver los nombres de tipo especificados en un recurso.Creates a new ResXResourceReader object and initializes it to read a string whose contents are in the form of an XML resource file, and to use an ITypeResolutionService object to resolve type names specified in a resource.

GetEnumerator()

Devuelve un enumerador para el objeto ResXResourceReader actual.Returns an enumerator for the current ResXResourceReader object.

GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetMetadataEnumerator()

Proporciona un enumerador de diccionario que puede recuperar las propiedades en tiempo de diseño de la secuencia o archivo de recursos XML actual.Provides a dictionary enumerator that can retrieve the design-time properties from the current XML resource file or stream.

GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)

Implementaciones de interfaz explícitas

IDisposable.Dispose()

Libera los recursos no administrados que usa ResXResourceReader y, de forma opcional, libera los recursos administrados.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources. Para obtener una descripción de este miembro, vea el método Dispose().For a description of this member, see the Dispose() method.

IEnumerable.GetEnumerator()

Devuelve un enumerador para el objeto ResXResourceReader actual.Returns an enumerator for the current ResXResourceReader object. Para obtener una descripción de este miembro, vea el método GetEnumerator().For a description of this member, see the GetEnumerator() method.

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.Enables parallelization of a query.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

Se aplica a

Consulte también