ResXResourceReader Classe

Definição

Enumera os arquivos e fluxos de recurso de XML (.resx) e lê os pares de nome e valor do recurso sequencial.Enumerates XML resource (.resx) files and streams, and reads the sequential resource name and value pairs.

public ref class ResXResourceReader : IDisposable, System::Collections::IEnumerable, System::Resources::IResourceReader
public ref class ResXResourceReader : System::Resources::IResourceReader
public class ResXResourceReader : IDisposable, System.Collections.IEnumerable, System.Resources.IResourceReader
public class ResXResourceReader : System.Resources.IResourceReader
type ResXResourceReader = class
    interface IResourceReader
    interface IEnumerable
    interface IDisposable
Public Class ResXResourceReader
Implements IDisposable, IEnumerable, IResourceReader
Public Class ResXResourceReader
Implements IResourceReader
Herança
ResXResourceReader
Implementações

Exemplos

O exemplo a seguir demonstra como usar um ResXResourceReader para iterar pelos recursos em um arquivo. resx.The following example demonstrates how to use a ResXResourceReader to iterate through the resources in a .resx file. Primeiro, o rsxr de ResXResourceReaderé criado para o items.resxde arquivo.First, the ResXResourceReaderrsxr is created for the file items.resx. Em seguida, o método GetEnumerator é usado para criar um IDictionaryEnumerator para iterar pelos recursos e exibir o conteúdo para o console.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

Comentários

A classe ResXResourceReader fornece uma implementação padrão da interface IResourceReader que lê informações de recursos em um formato XML.The ResXResourceReader class provides a default implementation of the IResourceReader interface that reads resource information in an XML format. Para ler informações de recursos de um formato de recurso binário, use a classe ResourceReader.To read resource information from a binary resource format, use the ResourceReader class.

Você usa a classe ResXResourceReader para enumerar recursos em arquivos. resx atravessando o enumerador de dicionário (IDictionaryEnumerator) que é retornado pelo método GetEnumerator.You use the ResXResourceReader class to enumerate resources in .resx files by traversing the dictionary enumerator (IDictionaryEnumerator) that is returned by the GetEnumerator method. Você chama os métodos fornecidos pelo IDictionaryEnumerator para avançar para o próximo recurso e ler o nome e o valor de cada recurso no arquivo. 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.

Observação

A classe ResXResourceReader fornece dois enumeradores.The ResXResourceReader class provides two enumerators. O método ResXResourceReader.GetEnumerator retorna um objeto IDictionaryEnumerator; Recomendamos que você use esse método para enumerar recursos.The ResXResourceReader.GetEnumerator method returns an IDictionaryEnumerator object; we recommend that you use this method to enumerate resources. O método ResXResourceReader.IEnumerable.GetEnumerator é uma implementação de interface explícita que retorna um objeto IEnumerator; Não recomendamos seu uso.The ResXResourceReader.IEnumerable.GetEnumerator method is an explicit interface implementation that returns an IEnumerator object; we do not recommend its use.

O exemplo a seguir usa o método GetEnumerator para obter um objeto IDictionaryEnumerator que é usado para enumerar os recursos em um arquivo. resx.The following example uses the GetEnumerator method to obtain an IDictionaryEnumerator object that is used to enumerate the resources in a .resx file. O exemplo inclui uma rotina de CreateResourceFile que cria o arquivo de recurso necessário.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

Se a propriedade UseResXDataNodes for true, o valor da propriedade IDictionaryEnumerator.Value será um objeto ResXDataNode em vez do valor do recurso.If the UseResXDataNodes property is true, the value of the IDictionaryEnumerator.Value property is a ResXDataNode object rather than the resource value. Isso torna o comentário de um item de recurso disponível na propriedade ResXDataNode.Comment.This makes a resource item's comment available from the ResXDataNode.Comment property. O exemplo a seguir define a propriedade UseResXDataNodes como true e enumera os recursos em um arquivo. 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

Se UseResXDataNodes for true, os itens ResXDataNode na enumeração poderão ser:If UseResXDataNodes is true, the ResXDataNode items in the enumeration can be either:

  • Recursos nomeados junto com seus dados.Named resources along with their data. Nesse caso, a propriedade ResXDataNode.FileRef é null.In this case, the ResXDataNode.FileRef property is null.

  • Recursos nomeados junto com o nome do arquivo que contém os dados do recurso.Named resources along with the name of the file that contains the resource data. Nesse caso, a propriedade ResXDataNode.FileRef retorna um objeto ResXFileRef que fornece informações sobre o recurso, incluindo seu nome de arquivo.In this case, the ResXDataNode.FileRef property returns a ResXFileRef object that provides information about the resource, including its filename. Se forem usados nomes de arquivo relativos, você deverá sempre definir a propriedade BasePath para fornecer um ponto de referência para o caminho de arquivo relativo.If relative file names are used, you should always set the BasePath property to provide a reference point for the relative file path.

Se você quiser recuperar os recursos nomeados de um arquivo. resx em vez de enumerar seus recursos, poderá criar uma instância de um objeto ResXResourceSet e chamar seus GetString e GetObject métodos.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.

Observação

A classe ResXResourceReader contém uma demanda de link e uma demanda de herança no nível de classe que se aplica a todos os membros.The ResXResourceReader class contains a link demand and an inheritance demand at the class level that applies to all members. Uma exceção SecurityException é lançada quando o chamador imediato ou a classe derivada não tem permissão de confiança total.A SecurityException exception is thrown when either the immediate caller or the derived class does not have full-trust permission.

Construtores

ResXResourceReader(Stream)

Inicializa uma nova instância da classe ResXResourceReader para o fluxo especificado.Initializes a new instance of the ResXResourceReader class for the specified stream.

ResXResourceReader(Stream, AssemblyName[])

Inicializa uma nova instância da classe ResXResourceReader usando um fluxo e uma matriz de nomes de assembly.Initializes a new instance of the ResXResourceReader class using a stream and an array of assembly names.

ResXResourceReader(Stream, ITypeResolutionService)

Inicializa uma nova instância da classe ResXResourceReader usando um fluxo de entrada e um serviço de resolução de tipo.Initializes a new instance of the ResXResourceReader class using an input stream and a type resolution service.

ResXResourceReader(String)

Inicializa uma nova instância da classe ResXResourceReader para o arquivo de recurso especificado.Initializes a new instance of the ResXResourceReader class for the specified resource file.

ResXResourceReader(String, AssemblyName[])

Inicializa uma nova instância da classe ResXResourceReader usando um nome de arquivo de recurso XML e uma matriz de nomes de assembly.Initializes a new instance of the ResXResourceReader class using an XML resource file name and an array of assembly names.

ResXResourceReader(String, ITypeResolutionService)

Inicializa uma nova instância da classe ResXResourceReader usando um nome de arquivo e um serviço de resolução de tipo.Initializes a new instance of the ResXResourceReader class using a file name and a type resolution service.

ResXResourceReader(TextReader)

Inicializa uma nova instância da classe ResXResourceReader para o TextReader especificado.Initializes a new instance of the ResXResourceReader class for the specified TextReader.

ResXResourceReader(TextReader, AssemblyName[])

Inicializa uma nova instância da classe ResXResourceReader usando um objeto TextReader e uma matriz de nomes de assembly.Initializes a new instance of the ResXResourceReader class using a TextReader object and an array of assembly names.

ResXResourceReader(TextReader, ITypeResolutionService)

Inicializa uma nova instância da classe ResXResourceReader usando um leitor de fluxo de texto e um serviço de resolução de tipo.Initializes a new instance of the ResXResourceReader class using a text stream reader and a type resolution service.

Propriedades

BasePath

Obtém ou define o caminho base para o caminho relativo do arquivo especificado em um objeto ResXFileRef.Gets or sets the base path for the relative file path specified in a ResXFileRef object.

UseResXDataNodes

Obtém ou define um valor que indica se ResXDataNode objetos são retornados ao ler o fluxo ou arquivo de recurso XML atual.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 os recursos usados pelo ResXResourceReader.Releases all resources used by the ResXResourceReader.

Dispose(Boolean)

Libera os recursos não gerenciados usados pelo ResXResourceReader e, opcionalmente, libera os recursos gerenciados.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
Finalize()

Esse membro substitui o método Finalize().This member overrides the Finalize() method.

FromFileContents(String)

Cria um novo objeto ResXResourceReader e o inicializa para ler uma cadeia de caracteres cujos elementos estão na forma de um arquivo de recurso 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[])

Cria um novo objeto ResXResourceReader e o inicializa para ler uma cadeia de caracteres cujo conteúdo está na forma de um arquivo de recurso XML e para usar uma matriz de objetos AssemblyName para resolver nomes de tipo especificados em um 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)

Cria um novo objeto ResXResourceReader e o inicializa para ler uma cadeia de caracteres cujo conteúdo está na forma de um arquivo de recurso XML e para usar um objeto ITypeResolutionService para resolver nomes de tipo especificados em um 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()

Retorna um enumerador para o objeto ResXResourceReader atual.Returns an enumerator for the current ResXResourceReader object.

GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetMetadataEnumerator()

Fornece um enumerador de dicionário que pode recuperar as propriedades de tempo de design do fluxo ou arquivo de recurso XML.Provides a dictionary enumerator that can retrieve the design-time properties from the current XML resource file or stream.

GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Implantações explícitas de interface

IDisposable.Dispose()

Libera os recursos não gerenciados usados pelo ResXResourceReader e, opcionalmente, libera os recursos gerenciados.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources. Para obter uma descrição desse membro, consulte o método Dispose().For a description of this member, see the Dispose() method.

IEnumerable.GetEnumerator()

Retorna um enumerador para o objeto ResXResourceReader atual.Returns an enumerator for the current ResXResourceReader object. Para obter uma descrição desse membro, consulte o método GetEnumerator().For a description of this member, see the GetEnumerator() method.

Métodos de Extensão

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base em um tipo especificado.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.Enables parallelization of a query.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.Converts an IEnumerable to an IQueryable.

Aplica-se a

Veja também