ResXResourceReader 클래스

정의

XML 리소스 파일(.resx) 및 스트림을 열거하고 순차 리소스 이름 및 값 쌍을 읽습니다.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
상속
ResXResourceReader
구현

예제

다음 예제에 사용 하는 방법을 보여 줍니다.는 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.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

설명

합니다 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

경우 UseResXDataNodes 됩니다 true, 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 개체와 호출 해당 GetStringGetObject 메서드.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 직접 실행 호출자 또는 파생된 클래스에 완전 신뢰 권한이 없는 경우 예외가 throw 됩니다.A SecurityException exception is thrown when either the immediate caller or the derived class does not have full-trust permission.

생성자

ResXResourceReader(Stream)

지정된 스트림에 대한 ResXResourceReader 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ResXResourceReader class for the specified stream.

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 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ResXResourceReader class using an input stream and a type resolution service.

ResXResourceReader(String)

지정된 리소스 파일에 대한 ResXResourceReader 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ResXResourceReader class for the specified resource file.

ResXResourceReader(String, AssemblyName[])

XML 리소스 파일 이름과 어셈블리 이름 배열을 사용하여 ResXResourceReader 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ResXResourceReader class using an XML resource file name and an array of assembly names.

ResXResourceReader(String, ITypeResolutionService)

파일 이름과 형식 확인 서비스를 사용하여 ResXResourceReader 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ResXResourceReader class using a file name and a type resolution service.

ResXResourceReader(TextReader)

지정된 TextReader에 대한 ResXResourceReader 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ResXResourceReader class for the specified TextReader.

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 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ResXResourceReader class using a text stream reader and a type resolution service.

속성

BasePath

ResXFileRef 개체에 지정된 상대 파일 경로의 기본 경로를 가져오거나 설정합니다.Gets or sets the base path for the relative file path specified in a ResXFileRef object.

UseResXDataNodes

현재 XML 리소스 파일 또는 스트림을 읽을 때 ResXDataNode 개체가 반환되는지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value that indicates whether ResXDataNode objects are returned when reading the current XML resource file or stream.

메서드

Close()

ResXResourceReader에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the ResXResourceReader.

Dispose(Boolean)

ResXResourceReader에서 사용하는 관리되지 않는 리소스를 해제하고, 관리되는 리소스를 선택적으로 해제할 수 있습니다.Releases the unmanaged resources used by the ResXResourceReader and optionally releases the managed resources.

Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
Finalize()

이 메서드는 Finalize() 메서드를 재정의합니다.This member overrides the Finalize() method.

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[])

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)

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

현재 ResXResourceReader 개체에 대한 열거자를 반환합니다.Returns an enumerator for the current ResXResourceReader object.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetMetadataEnumerator()

현재 XML 리소스 파일 또는 스트림에서 디자인 타임 속성을 검색할 수 있는 사전 열거자를 제공합니다.Provides a dictionary enumerator that can retrieve the design-time properties from the current XML resource file or stream.

GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

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

현재 ResXResourceReader 개체에 대한 열거자를 반환합니다.Returns an enumerator for the current ResXResourceReader object. 이 멤버에 대한 설명을 보려면 GetEnumerator() 메서드를 참조하세요.For a description of this member, see the GetEnumerator() method.

확장 메서드

Cast<TResult>(IEnumerable)

IEnumerable의 요소를 지정된 형식으로 캐스팅합니다.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable의 요소를 필터링합니다.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

쿼리를 병렬화할 수 있도록 합니다.Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable로 변환합니다.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.

적용 대상

추가 정보