ResXResourceReader ResXResourceReader ResXResourceReader ResXResourceReader Class

定義

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
継承
ResXResourceReaderResXResourceReaderResXResourceReaderResXResourceReader
実装

次の例は、をResXResourceReader使用して、.resx ファイル内のリソースを反復処理する方法を示しています。The following example demonstrates how to use a ResXResourceReader to iterate through the resources in a .resx file. まず、ファイルResXResourceReader rsxr に対してが作成されますitems.resxFirst, the ResXResourceReaderrsxr is created for the file items.resx. 次にIDictionaryEnumerator 、メソッドを使用して、リソースを反復処理して内容をコンソールに表示するをGetEnumerator作成します。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は、XML 形式でリソース情報IResourceReaderを読み取るインターフェイスの既定の実装を提供します。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クラスを使用して、 GetEnumeratorメソッドによって返されるディクショナリ列挙子 (IDictionaryEnumerator) を走査することにより、.resx ファイル内のリソースを列挙します。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は、2つの列挙子を提供します。The ResXResourceReader class provides two enumerators. メソッドResXResourceReader.GetEnumeratorIDictionaryEnumeratorオブジェクトを返します。このメソッドを使用してリソースを列挙することをお勧めします。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

プロパティがtrueの場合ResXDataNode 、プロパティの値はリソース値ではなく、オブジェクトになります。 IDictionaryEnumerator.Value UseResXDataNodesIf 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

ResXDataNodeUseResXDataNodes の場合、列挙体の項目は次のいずれかになります。trueIf 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例外は、直前の呼び出し元または派生クラスに完全信頼のアクセス許可がない場合にスローされます。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[])

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

指定した TextReaderResXResourceReader クラスの新しいインスタンスを初期化します。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

現在の XML リソース ファイルまたは XML リソース ストリームを読み込んでいるときに、ResXDataNode オブジェクトが返されるかどうかを示す値を取得または設定します。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 リソース ファイルまたは 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)

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.

適用対象

こちらもご覧ください