ResXResourceReader Classe

Definizione

Enumera i flussi e i file di risorse XML (resx) e legge le coppie di nomi e valori delle risorse sequenziali.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
Ereditarietà
ResXResourceReader
Implementazioni

Esempio

Nell'esempio seguente viene illustrato come utilizzare un oggetto ResXResourceReader per scorrere le risorse in un file resx.The following example demonstrates how to use a ResXResourceReader to iterate through the resources in a .resx file. Per prima cosa, ResXResourceReader rsxr viene creato per il file items.resx .First, the ResXResourceReaderrsxr is created for the file items.resx. GetEnumeratorViene quindi usato il metodo per creare un oggetto IDictionaryEnumerator per scorrere le risorse e visualizzare il contenuto nella 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

Commenti

La ResXResourceReader classe fornisce un'implementazione predefinita dell' IResourceReader interfaccia che legge le informazioni sulle risorse in un formato XML.The ResXResourceReader class provides a default implementation of the IResourceReader interface that reads resource information in an XML format. Per leggere le informazioni sulle risorse da un formato di risorsa binario, usare la ResourceReader classe.To read resource information from a binary resource format, use the ResourceReader class.

Usare la ResXResourceReader classe per enumerare le risorse nei file con estensione resx attraversando l'enumeratore del dizionario ( IDictionaryEnumerator ) restituito dal GetEnumerator metodo.You use the ResXResourceReader class to enumerate resources in .resx files by traversing the dictionary enumerator (IDictionaryEnumerator) that is returned by the GetEnumerator method. È possibile chiamare i metodi forniti da IDictionaryEnumerator per passare alla risorsa successiva e leggere il nome e il valore di ogni risorsa nel file. 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 classe fornisce due enumeratori.The ResXResourceReader class provides two enumerators. Il ResXResourceReader.GetEnumerator metodo restituisce un IDictionaryEnumerator oggetto. è consigliabile usare questo metodo per enumerare le risorse.The ResXResourceReader.GetEnumerator method returns an IDictionaryEnumerator object; we recommend that you use this method to enumerate resources. Il ResXResourceReader.IEnumerable.GetEnumerator metodo è un'implementazione esplicita dell'interfaccia che restituisce un IEnumerator oggetto. non è consigliabile utilizzarlo.The ResXResourceReader.IEnumerable.GetEnumerator method is an explicit interface implementation that returns an IEnumerator object; we do not recommend its use.

Nell'esempio seguente viene utilizzato il GetEnumerator metodo per ottenere un IDictionaryEnumerator oggetto utilizzato per enumerare le risorse in un file resx.The following example uses the GetEnumerator method to obtain an IDictionaryEnumerator object that is used to enumerate the resources in a .resx file. Nell'esempio è inclusa una CreateResourceFile routine che consente di creare il file di risorse necessario.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 la UseResXDataNodes proprietà è true , il valore della IDictionaryEnumerator.Value proprietà è un ResXDataNode oggetto anziché il valore della risorsa.If the UseResXDataNodes property is true, the value of the IDictionaryEnumerator.Value property is a ResXDataNode object rather than the resource value. In questo modo il commento di un elemento di risorsa viene reso disponibile dalla ResXDataNode.Comment Proprietà.This makes a resource item's comment available from the ResXDataNode.Comment property. Nell'esempio seguente la proprietà viene impostata UseResXDataNodes su true ed enumera le risorse in un file con estensione 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 è true , gli ResXDataNode elementi nell'enumerazione possono essere:If UseResXDataNodes is true, the ResXDataNode items in the enumeration can be either:

  • Risorse denominate insieme ai relativi dati.Named resources along with their data. In questo caso, la ResXDataNode.FileRef proprietà è null .In this case, the ResXDataNode.FileRef property is null.

  • Risorse denominate insieme al nome del file che contiene i dati della risorsa.Named resources along with the name of the file that contains the resource data. In questo caso, la ResXDataNode.FileRef proprietà restituisce un ResXFileRef oggetto che fornisce informazioni sulla risorsa, incluso il relativo nome file.In this case, the ResXDataNode.FileRef property returns a ResXFileRef object that provides information about the resource, including its filename. Se vengono utilizzati nomi di file relativi, è sempre necessario impostare la BasePath proprietà per fornire un punto di riferimento per il percorso del file 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 si desidera recuperare le risorse denominate da un file con estensione resx anziché enumerarle, è possibile creare un'istanza di un ResXResourceSet oggetto e chiamare i relativi GetString GetObject metodi e.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 classe contiene una richiesta di collegamento e una richiesta di ereditarietà a livello di classe che si applica a tutti i membri.The ResXResourceReader class contains a link demand and an inheritance demand at the class level that applies to all members. Un' SecurityException eccezione viene generata quando il chiamante immediato o la classe derivata non dispone dell'autorizzazione di attendibilità totale.A SecurityException exception is thrown when either the immediate caller or the derived class does not have full-trust permission.

Costruttori

ResXResourceReader(Stream)

Inizializza una nuova istanza della classe ResXResourceReader per il flusso specificato.Initializes a new instance of the ResXResourceReader class for the specified stream.

ResXResourceReader(Stream, AssemblyName[])

Inizializza una nuova istanza della classe ResXResourceReader usando un flusso e una matrice di nomi di assembly.Initializes a new instance of the ResXResourceReader class using a stream and an array of assembly names.

ResXResourceReader(Stream, ITypeResolutionService)

Inizializza una nuova istanza della classe ResXResourceReader usando un flusso di input e un servizio di risoluzione del tipo.Initializes a new instance of the ResXResourceReader class using an input stream and a type resolution service.

ResXResourceReader(String)

Inizializza una nuova istanza della classe ResXResourceReader per il file di risorse specificato.Initializes a new instance of the ResXResourceReader class for the specified resource file.

ResXResourceReader(String, AssemblyName[])

Inizializza una nuova istanza della classe ResXResourceReader usando un nome file di risorse XML e una matrice di nomi di assembly.Initializes a new instance of the ResXResourceReader class using an XML resource file name and an array of assembly names.

ResXResourceReader(String, ITypeResolutionService)

Inizializza una nuova istanza della classe ResXResourceReader usando un nome file e un servizio di risoluzione del tipo.Initializes a new instance of the ResXResourceReader class using a file name and a type resolution service.

ResXResourceReader(TextReader)

Inizializza una nuova istanza della classe ResXResourceReader per l'oggetto TextReader specificato.Initializes a new instance of the ResXResourceReader class for the specified TextReader.

ResXResourceReader(TextReader, AssemblyName[])

Inizializza una nuova istanza della classe ResXResourceReader usando un oggetto TextReader e una matrice di nomi di assembly.Initializes a new instance of the ResXResourceReader class using a TextReader object and an array of assembly names.

ResXResourceReader(TextReader, ITypeResolutionService)

Inizializza una nuova istanza della classe ResXResourceReader usando un lettore del flusso di testo e un servizio di risoluzione del tipo.Initializes a new instance of the ResXResourceReader class using a text stream reader and a type resolution service.

Proprietà

BasePath

Ottiene o imposta il percorso di base per il percorso file relativo specificato in un oggetto ResXFileRef.Gets or sets the base path for the relative file path specified in a ResXFileRef object.

UseResXDataNodes

Ottiene o imposta un valore che indica se gli oggetti ResXDataNode vengono restituiti durante la lettura del flusso o del file di risorse XML corrente.Gets or sets a value that indicates whether ResXDataNode objects are returned when reading the current XML resource file or stream.

Metodi

Close()

Rilascia tutte le risorse usate da ResXResourceReader.Releases all resources used by the ResXResourceReader.

Dispose(Boolean)

Rilascia le risorse non gestite usate da ResXResourceReader e, facoltativamente, le risorse gestite.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
Finalize()

Questo metodo esegue l'override del metodo Finalize().This member overrides the Finalize() method.

FromFileContents(String)

Crea un nuovo oggetto ResXResourceReader e lo inizializza per la lettura di una stringa il cui contenuto è nel formato di file di risorse 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 nuovo oggetto ResXResourceReader e lo inizializza per la lettura di una stringa il cui contenuto è nel formato di file di risorse XML e per l'uso di una matrice di oggetti AssemblyName per la risoluzione dei nomi di tipi specificati in una risorsa.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 nuovo oggetto ResXResourceReader e lo inizializza per la lettura di una stringa il cui contenuto è nel formato di file di risorse XML e per l'uso di un oggetto ITypeResolutionService per la risoluzione dei nomi di tipi specificati in una risorsa.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()

Restituisce un enumeratore per l'oggetto ResXResourceReader corrente.Returns an enumerator for the current ResXResourceReader object.

GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetMetadataEnumerator()

Fornisce un enumeratore di dizionario in grado di recuperare le proprietà in fase di progettazione dal flusso o dal file di risorse XML corrente.Provides a dictionary enumerator that can retrieve the design-time properties from the current XML resource file or stream.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Rilascia le risorse non gestite usate da ResXResourceReader e, facoltativamente, le risorse gestite.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources. Per una descrizione di questo membro, vedere il metodo Dispose().For a description of this member, see the Dispose() method.

IEnumerable.GetEnumerator()

Restituisce un enumeratore per l'oggetto ResXResourceReader corrente.Returns an enumerator for the current ResXResourceReader object. Per una descrizione di questo membro, vedere il metodo GetEnumerator().For a description of this member, see the GetEnumerator() method.

Metodi di estensione

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.Enables parallelization of a query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.Converts an IEnumerable to an IQueryable.

Si applica a

Vedi anche