ResXResourceReader Clase

Definición

Enumera las secuencias y archivos de recursos XML (.resx) y lee los pares secuenciales nombre-valor de los recursos.

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 usar un ResXResourceReader para recorrer en iteración los recursos de un archivo .resx. En primer lugar, ResXResourceReaderrsxr se crea para el archivo items.resx. A continuación, el GetEnumerator método se usa para crear un IDictionaryEnumerator para recorrer en iteración los recursos y mostrar el contenido en la consola.

#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

Importante

Llamar a métodos de esta clase con datos que no son de confianza supone un riesgo de seguridad. Llame a los métodos de esta clase solo con datos de confianza. Para obtener más información, vea Validar todas las entradas.

La ResXResourceReader clase proporciona una implementación predeterminada de la interfaz que lee información IResourceReader de recursos en un formato XML. Para leer la información de recursos de un formato de recurso binario, use la ResourceReader clase .

Use la ResXResourceReader clase para enumerar recursos en archivos .resx mediante el recorrido del enumerador de diccionario (IDictionaryEnumerator) devuelto por el GetEnumerator método . Llame a los métodos proporcionados por IDictionaryEnumerator para avanzar al siguiente recurso y para leer el nombre y el valor de cada recurso en el archivo .resx.

Nota:

La ResXResourceReader clase proporciona dos enumeradores. El ResXResourceReader.GetEnumerator método devuelve un IDictionaryEnumerator objeto; se recomienda usar este método para enumerar los recursos. El ResXResourceReader.IEnumerable.GetEnumerator método es una implementación de interfaz explícita que devuelve un IEnumerator objeto; no se recomienda su uso.

En el ejemplo siguiente se usa el GetEnumerator método para obtener un IDictionaryEnumerator objeto que se usa para enumerar los recursos de un archivo .resx. En el ejemplo se incluye una CreateResourceFile rutina que crea el archivo de recursos necesario.

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. Esto hace que el comentario de un elemento de recurso esté disponible en la ResXDataNode.Comment propiedad . En el ejemplo siguiente se establece la UseResXDataNodes propiedad true en y se enumeran los recursos de un archivo .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

Si UseResXDataNodes es true, los ResXDataNode elementos de la enumeración pueden ser:

  • Recursos con nombre junto con sus datos. En este caso, la ResXDataNode.FileRef propiedad es null.

  • Recursos con nombre junto con el nombre del archivo que contiene los datos de recursos. En este caso, la ResXDataNode.FileRef propiedad devuelve un ResXFileRef objeto que proporciona información sobre el recurso, incluido su nombre de archivo. Si se usan nombres de archivo relativos, siempre debe establecer la BasePath propiedad para proporcionar un punto de referencia para la ruta de acceso del archivo relativa.

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 sus GetString métodos y GetObject .

Nota:

La ResXResourceReader clase contiene una demanda de vínculo y una demanda de herencia en el nivel de clase que se aplica a todos los miembros. Se produce una SecurityException excepción cuando el llamador inmediato o la clase derivada no tienen permiso de plena confianza.

Constructores

ResXResourceReader(Stream)

Inicializa una nueva instancia de la clase ResXResourceReader para el flujo especificado.

ResXResourceReader(Stream, AssemblyName[])

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un flujo y una matriz de nombres de ensamblado.

ResXResourceReader(Stream, ITypeResolutionService)

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un flujo de entrada y un servicio de resolución de tipos.

ResXResourceReader(String)

Inicializa una nueva instancia de la clase ResXResourceReader para el archivo de recursos especificado.

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.

ResXResourceReader(String, ITypeResolutionService)

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un nombre de archivo y un servicio de resolución de tipos.

ResXResourceReader(TextReader)

Inicializa una nueva instancia de la clase ResXResourceReader para el objetoTextReader especificado.

ResXResourceReader(TextReader, AssemblyName[])

Inicializa una nueva instancia de la clase ResXResourceReader utilizando un objeto TextReader y una matriz de nombres de ensamblado.

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.

Propiedades

BasePath

Obtiene o establece la ruta de acceso base para la ruta de acceso relativa al archivo especificada en un objeto ResXFileRef.

UseResXDataNodes

Obtiene o establece un valor que indica si se devuelven objetos ResXDataNode al leer la secuencia o archivo de recursos XML actual.

Métodos

Close()

Libera todos los recursos que usa ResXResourceReader.

Dispose(Boolean)

Libera los recursos no administrados que usa ResXResourceReader y, de forma opcional, libera los recursos administrados.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
Finalize()

Este miembro reemplaza el método Finalize().

FromFileContents(String)

Crea un nuevo objeto ResXResourceReader y lo inicializa para leer una cadena cuyo contenido está en forma de archivo de recursos XML.

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.

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.

GetEnumerator()

Devuelve un enumerador para el objeto ResXResourceReader actual.

GetHashCode()

Sirve como la función hash predeterminada.

(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.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(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. Para obtener una descripción de este miembro, vea el método Dispose().

IEnumerable.GetEnumerator()

Devuelve un enumerador para el objeto ResXResourceReader actual. Para obtener una descripción de este miembro, vea el método GetEnumerator().

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a

Consulte también