ResXResourceReader Klasa

Definicja

Wylicza pliki i strumienie zasobów XML (. resx) i odczytuje sekwencyjne pary nazw zasobów i wartości.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
Dziedziczenie
ResXResourceReader
Implementuje

Przykłady

Poniższy przykład ilustruje sposób użycia programu ResXResourceReader do iteracji zasobów w pliku resx.The following example demonstrates how to use a ResXResourceReader to iterate through the resources in a .resx file. Najpierw ResXResourceReader rsxr tworzony jest plik items.resx .First, the ResXResourceReaderrsxr is created for the file items.resx. Następnie GetEnumerator Metoda jest używana do tworzenia IDictionaryEnumerator w celu iteracji zasobów i wyświetlania zawartości w konsoli programu.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

Uwagi

ResXResourceReaderKlasa zapewnia domyślną implementację IResourceReader interfejsu, który odczytuje informacje o zasobach w formacie XML.The ResXResourceReader class provides a default implementation of the IResourceReader interface that reads resource information in an XML format. Aby odczytać informacje o zasobach z formatu zasobów binarnych, użyj ResourceReader klasy.To read resource information from a binary resource format, use the ResourceReader class.

ResXResourceReaderKlasa służy do wyliczania zasobów w plikach resx przez przechodzenie przez moduł wyliczający słownika ( IDictionaryEnumerator ), który jest zwracany przez GetEnumerator metodę.You use the ResXResourceReader class to enumerate resources in .resx files by traversing the dictionary enumerator (IDictionaryEnumerator) that is returned by the GetEnumerator method. Należy wywołać metody dostarczone przez program, IDictionaryEnumerator Aby przejść do następnego zasobu i odczytać nazwę i wartość każdego zasobu w pliku 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.

Uwaga

ResXResourceReaderKlasa zawiera dwa moduły wyliczające.The ResXResourceReader class provides two enumerators. ResXResourceReader.GetEnumeratorMetoda zwraca IDictionaryEnumerator obiekt; zalecamy użycie tej metody do wyliczania zasobów.The ResXResourceReader.GetEnumerator method returns an IDictionaryEnumerator object; we recommend that you use this method to enumerate resources. ResXResourceReader.IEnumerable.GetEnumeratorMetoda jest jawną implementacją interfejsu, która zwraca IEnumerator obiekt; nie zalecamy jej używania.The ResXResourceReader.IEnumerable.GetEnumerator method is an explicit interface implementation that returns an IEnumerator object; we do not recommend its use.

W poniższym przykładzie użyto GetEnumerator metody w celu uzyskania IDictionaryEnumerator obiektu, który jest używany do wyliczania zasobów w pliku resx.The following example uses the GetEnumerator method to obtain an IDictionaryEnumerator object that is used to enumerate the resources in a .resx file. Przykład zawiera CreateResourceFile procedurę, która tworzy wymagany plik zasobów.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

Jeśli UseResXDataNodes Właściwość jest true , wartość IDictionaryEnumerator.Value właściwości jest ResXDataNode obiektem, a nie wartością zasobu.If the UseResXDataNodes property is true, the value of the IDictionaryEnumerator.Value property is a ResXDataNode object rather than the resource value. Powoduje to udostępnienie komentarza elementu zasobu z ResXDataNode.Comment właściwości.This makes a resource item's comment available from the ResXDataNode.Comment property. Poniższy przykład ustawia UseResXDataNodes Właściwość na true i wylicza zasoby w pliku 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

Jeśli UseResXDataNodes ma wartość true , ResXDataNode elementy w wyliczeniu mogą być następujące:If UseResXDataNodes is true, the ResXDataNode items in the enumeration can be either:

  • Nazwane zasoby wraz z ich danymi.Named resources along with their data. W tym przypadku ResXDataNode.FileRef Właściwość jest null .In this case, the ResXDataNode.FileRef property is null.

  • Nazwane zasoby wraz z nazwą pliku zawierającego dane zasobów.Named resources along with the name of the file that contains the resource data. W tym przypadku ResXDataNode.FileRef Właściwość zwraca ResXFileRef obiekt, który zawiera informacje o zasobie, w tym jego nazwę pliku.In this case, the ResXDataNode.FileRef property returns a ResXFileRef object that provides information about the resource, including its filename. Jeśli używane są względne nazwy plików, należy zawsze ustawić BasePath Właściwość, aby zapewnić punkt odniesienia dla względnej ścieżki pliku.If relative file names are used, you should always set the BasePath property to provide a reference point for the relative file path.

Jeśli chcesz pobrać nazwane zasoby z pliku resx zamiast wyliczania zasobów, możesz utworzyć wystąpienie ResXResourceSet obiektu i wywołać jego GetString GetObject metody i.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.

Uwaga

ResXResourceReaderKlasa zawiera żądanie linku i dziedziczenie na poziomie klasy, który ma zastosowanie do wszystkich elementów członkowskich.The ResXResourceReader class contains a link demand and an inheritance demand at the class level that applies to all members. SecurityExceptionWyjątek jest zgłaszany, gdy bezpośredni obiekt wywołujący lub Klasa pochodna nie ma uprawnienia pełnego zaufania.A SecurityException exception is thrown when either the immediate caller or the derived class does not have full-trust permission.

Konstruktory

ResXResourceReader(Stream)

Inicjuje nowe wystąpienie ResXResourceReader klasy dla określonego strumienia.Initializes a new instance of the ResXResourceReader class for the specified stream.

ResXResourceReader(Stream, AssemblyName[])

Inicjuje nowe wystąpienie ResXResourceReader klasy przy użyciu strumienia i tablicy nazw zestawów.Initializes a new instance of the ResXResourceReader class using a stream and an array of assembly names.

ResXResourceReader(Stream, ITypeResolutionService)

Inicjuje nowe wystąpienie ResXResourceReader klasy przy użyciu strumienia danych wejściowych i usługi rozpoznawania typów.Initializes a new instance of the ResXResourceReader class using an input stream and a type resolution service.

ResXResourceReader(String)

Inicjuje nowe wystąpienie ResXResourceReader klasy dla określonego pliku zasobów.Initializes a new instance of the ResXResourceReader class for the specified resource file.

ResXResourceReader(String, AssemblyName[])

Inicjuje nowe wystąpienie ResXResourceReader klasy przy użyciu nazwy pliku zasobu XML i tablicy nazw zestawów.Initializes a new instance of the ResXResourceReader class using an XML resource file name and an array of assembly names.

ResXResourceReader(String, ITypeResolutionService)

Inicjuje nowe wystąpienie ResXResourceReader klasy przy użyciu nazwy pliku i usługi rozpoznawania typów.Initializes a new instance of the ResXResourceReader class using a file name and a type resolution service.

ResXResourceReader(TextReader)

Inicjuje nowe wystąpienie ResXResourceReader klasy dla określonego elementu TextReader .Initializes a new instance of the ResXResourceReader class for the specified TextReader.

ResXResourceReader(TextReader, AssemblyName[])

Inicjuje nowe wystąpienie ResXResourceReader klasy przy użyciu TextReader obiektu i tablicy nazw zestawów.Initializes a new instance of the ResXResourceReader class using a TextReader object and an array of assembly names.

ResXResourceReader(TextReader, ITypeResolutionService)

Inicjuje nowe wystąpienie ResXResourceReader klasy za pomocą czytnika strumienia tekstu i usługi rozpoznawania typów.Initializes a new instance of the ResXResourceReader class using a text stream reader and a type resolution service.

Właściwości

BasePath

Pobiera lub ustawia ścieżkę bazową względnej ścieżki pliku określonego w ResXFileRef obiekcie.Gets or sets the base path for the relative file path specified in a ResXFileRef object.

UseResXDataNodes

Pobiera lub ustawia wartość wskazującą, czy ResXDataNode obiekty są zwracane podczas odczytywania bieżącego pliku lub strumienia zasobów XML.Gets or sets a value that indicates whether ResXDataNode objects are returned when reading the current XML resource file or stream.

Metody

Close()

Zwalnia wszelkie zasoby używane przez element ResXResourceReader.Releases all resources used by the ResXResourceReader.

Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element ResXResourceReader i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
Finalize()

Ten element członkowski zastępuje Finalize() metodę.This member overrides the Finalize() method.

FromFileContents(String)

Tworzy nowy ResXResourceReader obiekt i inicjuje go w celu odczytania ciągu, którego zawartość znajduje się w postaci pliku zasobów 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[])

Tworzy nowy ResXResourceReader obiekt i inicjuje go w celu odczytania ciągu, którego zawartość znajduje się w postaci pliku zasobów XML, i aby użyć tablicy AssemblyName obiektów do rozpoznania nazw typów określonych w zasobie.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)

Tworzy nowy ResXResourceReader obiekt i inicjuje go w celu odczytania ciągu, którego zawartość znajduje się w postaci pliku zasobów XML, i aby użyć ITypeResolutionService obiektu do rozpoznania nazw typów określonych w zasobie.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()

Zwraca moduł wyliczający dla bieżącego ResXResourceReader obiektu.Returns an enumerator for the current ResXResourceReader object.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetMetadataEnumerator()

Udostępnia moduł wyliczający słowniki, który może pobrać właściwości czasu projektowania z bieżącego pliku zasobów lub strumienia XML.Provides a dictionary enumerator that can retrieve the design-time properties from the current XML resource file or stream.

GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia zasoby niezarządzane używane przez element ResXResourceReader i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources. Aby uzyskać opis tego elementu członkowskiego, zobacz Dispose() metodę.For a description of this member, see the Dispose() method.

IEnumerable.GetEnumerator()

Zwraca moduł wyliczający dla bieżącego ResXResourceReader obiektu.Returns an enumerator for the current ResXResourceReader object. Aby uzyskać opis tego elementu członkowskiego, zobacz GetEnumerator() metodę.For a description of this member, see the GetEnumerator() method.

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy elementu IEnumerable do określonego typu.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable w oparciu o określony typ.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Włącza przetwarzanie równoległe zapytania.Enables parallelization of a query.

AsQueryable(IEnumerable)

Konwertuje IEnumerable do IQueryable .Converts an IEnumerable to an IQueryable.

Dotyczy

Zobacz też