ResXResourceReader ResXResourceReader ResXResourceReader ResXResourceReader Class

Определение

Перечисляет файлы (.resx) и потоки XML-ресурсов, считывая последовательно пары "имя-значение" для ресурсов.Enumerates XML resource (.resx) files and streams, and reads the sequential resource name and value pairs.

public ref class ResXResourceReader : System::Resources::IResourceReader
public class ResXResourceReader : System.Resources.IResourceReader
type ResXResourceReader = class
    interface IResourceReader
    interface IEnumerable
    interface IDisposable
Public Class ResXResourceReader
Implements IResourceReader
Наследование
ResXResourceReaderResXResourceReaderResXResourceReaderResXResourceReader
Реализации

Примеры

Следующий пример демонстрирует, как использовать ResXResourceReader для перебора ресурсы в RESX-файла.The following example demonstrates how to use a ResXResourceReader to iterate through the resources in a .resx file. Во-первых, ResXResourceReader rsxr создается для файла items.resx.First, the ResXResourceReaderrsxr is created for the file items.resx. Далее, GetEnumerator метод используется для создания IDictionaryEnumerator для просмотра ресурсов и отображения содержимого на консоль.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
Imports System.Resources
Imports System.Collections
Imports Microsoft.VisualBasic

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

Комментарии

ResXResourceReader Класс предоставляет реализацию по умолчанию IResourceReader интерфейс, который считывает сведения о ресурсах в формате XML.The ResXResourceReader class provides a default implementation of the IResourceReader interface that reads resource information in an XML format. Чтобы считать сведения о ресурсах из формата двоичный файл ресурсов, используйте ResourceReader класса.To read resource information from a binary resource format, use the ResourceReader class.

Использовании ResXResourceReader класс перечислить ресурсы в RESX-файлах, проходя перечислитель словаря (IDictionaryEnumerator), возвращаемый 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. Вызов методов, предоставляемых IDictionaryEnumerator для перехода по списку ресурсов и имя и значение каждого ресурса в 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.

Примечание

ResXResourceReader Класс предоставляет два перечислителя.The ResXResourceReader class provides two enumerators. ResXResourceReader.GetEnumerator Возвращает метод IDictionaryEnumerator объекта; мы рекомендуем использовать этот метод для перечисления ресурсов.The ResXResourceReader.GetEnumerator method returns an IDictionaryEnumerator object; we recommend that you use this method to enumerate resources. ResXResourceReader.IEnumerable.GetEnumerator Метода является явной реализацией интерфейса, возвращающий IEnumerator объекта; его использование не рекомендуется.The ResXResourceReader.IEnumerable.GetEnumerator method is an explicit interface implementation that returns an IEnumerator object; we do not recommend its use.

В следующем примере используется GetEnumerator метод, чтобы получить IDictionaryEnumerator объект, который позволяет перечислить ресурсы в RESX-файла.The following example uses the GetEnumerator method to obtain an IDictionaryEnumerator object that is used to enumerate the resources in a .resx file. В примере CreateResourceFile подпрограмму, которая создает файл необходимых ресурсов.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

Если UseResXDataNodes свойство true, значение IDictionaryEnumerator.Value свойство ResXDataNode объекта, а не значение ресурса.If the UseResXDataNodes property is true, the value of the IDictionaryEnumerator.Value property is a ResXDataNode object rather than the resource value. Это делает элемент ресурса комментарий доступным из ResXDataNode.Comment свойство.This makes a resource item's comment available from the ResXDataNode.Comment property. В следующем примере задается UseResXDataNodes свойства true и перечисляет ресурсы в 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

Если UseResXDataNodestrue, ResXDataNode элементов в перечислении может быть либо:If UseResXDataNodes is true, the ResXDataNode items in the enumeration can be either:

  • Именованные ресурсы вместе с их данными.Named resources along with their data. В этом случае ResXDataNode.FileRef свойство null.In this case, the ResXDataNode.FileRef property is null.

  • Имена ресурсов, а также имя файла, содержащего данные ресурсов.Named resources along with the name of the file that contains the resource data. В этом случае ResXDataNode.FileRef возвращает ResXFileRef объект, предоставляющий сведения о ресурсе, включая его имя файла.In this case, the ResXDataNode.FileRef property returns a ResXFileRef object that provides information about the resource, including its filename. Если используются относительные имена, должен всегда быть установлен BasePath свойство, чтобы предоставить опорную точку для относительного пути к файлу.If relative file names are used, you should always set the BasePath property to provide a reference point for the relative file path.

Если вы хотите получить именованные ресурсы из RESX-файла, а не перечисление его ресурсов, можно создать экземпляр ResXResourceSet и вызовите его GetString и GetObject методы.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.

Примечание

ResXResourceReader Класс содержит запрос компоновки и требования наследования на уровне класса, который применяется ко всем элементам.The ResXResourceReader class contains a link demand and an inheritance demand at the class level that applies to all members. Объект SecurityException исключение возникает, если непосредственный вызывающий оператор или производного класса не имеет разрешения полного доверия.A SecurityException exception is thrown when either the immediate caller or the derived class does not have full-trust permission.

Конструкторы

ResXResourceReader(Stream) ResXResourceReader(Stream) ResXResourceReader(Stream) ResXResourceReader(Stream)

Инициализирует новый экземпляр класса ResXResourceReader для заданного потока.Initializes a new instance of the ResXResourceReader class for the specified stream.

ResXResourceReader(Stream, AssemblyName[]) ResXResourceReader(Stream, AssemblyName[]) ResXResourceReader(Stream, AssemblyName[]) ResXResourceReader(Stream, AssemblyName[])

Инициализирует новый экземпляр класса ResXResourceReader, используя поток и массив имен сборок.Initializes a new instance of the ResXResourceReader class using a stream and an array of assembly names.

ResXResourceReader(Stream, ITypeResolutionService) ResXResourceReader(Stream, ITypeResolutionService) ResXResourceReader(Stream, ITypeResolutionService) ResXResourceReader(Stream, ITypeResolutionService)

Инициализирует новый экземпляр класса ResXResourceReader, используя входной поток и службу разрешения типов.Initializes a new instance of the ResXResourceReader class using an input stream and a type resolution service.

ResXResourceReader(String) ResXResourceReader(String) ResXResourceReader(String) ResXResourceReader(String)

Инициализирует новый экземпляр класса ResXResourceReader для указанного имени файла ресурсов.Initializes a new instance of the ResXResourceReader class for the specified resource file.

ResXResourceReader(String, AssemblyName[]) ResXResourceReader(String, AssemblyName[]) ResXResourceReader(String, AssemblyName[]) ResXResourceReader(String, AssemblyName[])

Инициализирует новый экземпляр класса ResXResourceReader, используя имя файла ресурсов XML и массив имен сборок.Initializes a new instance of the ResXResourceReader class using an XML resource file name and an array of assembly names.

ResXResourceReader(String, ITypeResolutionService) ResXResourceReader(String, ITypeResolutionService) ResXResourceReader(String, ITypeResolutionService) ResXResourceReader(String, ITypeResolutionService)

Инициализирует новый экземпляр класса ResXResourceReader, используя имя файла и службу разрешения типов.Initializes a new instance of the ResXResourceReader class using a file name and a type resolution service.

ResXResourceReader(TextReader) ResXResourceReader(TextReader) ResXResourceReader(TextReader) ResXResourceReader(TextReader)

Инициализирует новый экземпляр класса ResXResourceReader для указанного объекта TextReader.Initializes a new instance of the ResXResourceReader class for the specified TextReader.

ResXResourceReader(TextReader, AssemblyName[]) ResXResourceReader(TextReader, AssemblyName[]) ResXResourceReader(TextReader, AssemblyName[]) ResXResourceReader(TextReader, AssemblyName[])

Инициализирует новый экземпляр класса ResXResourceReader, используя объект TextReader и массив имен сборок.Initializes a new instance of the ResXResourceReader class using a TextReader object and an array of assembly names.

ResXResourceReader(TextReader, ITypeResolutionService) ResXResourceReader(TextReader, ITypeResolutionService) ResXResourceReader(TextReader, ITypeResolutionService) ResXResourceReader(TextReader, ITypeResolutionService)

Инициализирует новый экземпляр класса ResXResourceReader, используя средство чтения текстового потока и службу разрешения типов.Initializes a new instance of the ResXResourceReader class using a text stream reader and a type resolution service.

Свойства

BasePath BasePath BasePath BasePath

Возвращает или задает базовый путь для относительного пути к файлу, заданному в объекте ResXFileRef.Gets or sets the base path for the relative file path specified in a ResXFileRef object.

UseResXDataNodes UseResXDataNodes UseResXDataNodes UseResXDataNodes

Получает или задает значение, указывающее, производится ли возвращение объектов ResXDataNode при чтении текущего файла ресурсов XML или потока.Gets or sets a value that indicates whether ResXDataNode objects are returned when reading the current XML resource file or stream.

Методы

Close() Close() Close() Close()

Освобождает все ресурсы, занятые модулем ResXResourceReader.Releases all resources used by the ResXResourceReader.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом ResXResourceReader, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

Этот член переопределяет метод Finalize().This member overrides the Finalize() method.

FromFileContents(String) FromFileContents(String) FromFileContents(String) FromFileContents(String)

Создает новый объект ResXResourceReader и инициализирует его, чтобы выполнить чтение строки, содержимое которой представлено в виде файла ресурсов 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[]) FromFileContents(String, AssemblyName[]) FromFileContents(String, AssemblyName[]) FromFileContents(String, AssemblyName[])

Создает новый объект ResXResourceReader и инициализирует его, чтобы выполнить чтение строки, содержимое которой представлено в виде файла ресурсов XML, а также для использования массива объектов AssemblyName для принятия решения относительно имен типов, заданных в ресурсе.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) FromFileContents(String, ITypeResolutionService) FromFileContents(String, ITypeResolutionService) FromFileContents(String, ITypeResolutionService)

Создает новый объект ResXResourceReader и инициализирует его, чтобы выполнить чтение строки, содержимое которой представлено в виде файла ресурсов XML, а также для использования объекта ITypeResolutionService для принятия решения относительно имен типов, заданных в ресурсе.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() GetEnumerator() GetEnumerator() GetEnumerator()

Возвращает перечислитель для текущего объекта ResXResourceReader.Returns an enumerator for the current ResXResourceReader object.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetMetadataEnumerator() GetMetadataEnumerator() GetMetadataEnumerator() GetMetadataEnumerator()

Обеспечивает словарный перечислитель, который может извлекать свойства времени проектирования из текущего файла ресурсов XML или из потока.Provides a dictionary enumerator that can retrieve the design-time properties from the current XML resource file or stream.

GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

Освобождает неуправляемые ресурсы, используемые объектом ResXResourceReader, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources. Описание этого элемента содержится в методе Dispose().For a description of this member, see the Dispose() method.

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

Возвращает перечислитель для текущего объекта ResXResourceReader.Returns an enumerator for the current ResXResourceReader object. Описание этого элемента содержится в методе GetEnumerator().For a description of this member, see the GetEnumerator() method.

Методы расширения

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Преобразует IEnumerable для IQueryable.Converts an IEnumerable to an IQueryable.

Безопасность

LinkDemand
для полного доверия для непосредственного вызывающего объекта.for full trust for the immediate caller. Этот член не может быть использован частично доверенным кодом.This member cannot be used by partially trusted code.

InheritanceDemand
для полного доверия для разработчиков производных классов.for full trust for inheritors. Этот класс не может наследоваться кодом с частичным доверием.This class cannot be inherited by partially trusted code.

Применяется к

Дополнительно