Aracılığıyla paylaş


ResXResourceReader Sınıf

Tanım

XML kaynağı (.resx) dosyalarını ve akışlarını numaralandırır ve sıralı kaynak adı ve değer çiftlerini okur.

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
Devralma
ResXResourceReader
Uygulamalar

Örnekler

Aşağıdaki örnekte bir .resx dosyasındaki kaynaklar arasında yineleme yapmak için bir ResXResourceReader nasıl kullanılacağı gösterilmektedir. İlk olarak, items.resxdosyası için ResXResourceReaderrsxr oluşturulur. Daha sonra GetEnumerator yöntemi, kaynaklar arasında yineleme yapmak ve içeriği konsolda görüntülemek üzere bir IDictionaryEnumerator oluşturmak için kullanılır.

#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

Açıklamalar

Önemli

Güvenilmeyen verilerle bu sınıftan yöntemleri çağırmak bir güvenlik riskidir. Bu sınıftaki yöntemleri yalnızca güvenilen verilerle çağırın. Daha fazla bilgi için bkz. Tüm Girişleri Doğrulama.

ResXResourceReader sınıfı, kaynak bilgilerini XML biçiminde okuyan IResourceReader arabiriminin varsayılan uygulamasını sağlar. İkili kaynak biçimindeki kaynak bilgilerini okumak için ResourceReader sınıfını kullanın.

GetEnumerator yöntemi tarafından döndürülen sözlük numaralandırıcısını (IDictionaryEnumerator) geçirerek .resx dosyalarındaki kaynakları listelemek için ResXResourceReader sınıfını kullanırsınız. Bir sonraki kaynağa ilerlemek ve .resx dosyasındaki her kaynağın adını ve değerini okumak için IDictionaryEnumerator tarafından sağlanan yöntemleri çağırırsınız.

Not

ResXResourceReader sınıfı iki numaralandırıcı sağlar. ResXResourceReader.GetEnumerator yöntemi bir IDictionaryEnumerator nesnesi döndürür; Kaynakları listelemek için bu yöntemi kullanmanızı öneririz. ResXResourceReader.IEnumerable.GetEnumerator yöntemi, IEnumerator nesnesi döndüren açık bir arabirim uygulamasıdır; kullanılmasını önermeyiz.

Aşağıdaki örnek, .resx dosyasındaki kaynakları numaralandırmak için kullanılan bir IDictionaryEnumerator nesnesi elde etmek için GetEnumerator yöntemini kullanır. Örnek, gerekli kaynak dosyasını oluşturan bir CreateResourceFile yordamını içerir.

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 özelliği trueise, IDictionaryEnumerator.Value özelliğinin değeri kaynak değeri yerine bir ResXDataNode nesnesidir. Bu, bir kaynak öğesinin açıklamasını ResXDataNode.Comment özelliğinden kullanılabilir hale getirir. Aşağıdaki örnek, UseResXDataNodes özelliğini true olarak ayarlar ve bir .resx dosyasındaki kaynakları numaralandırır.

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 trueise, numaralandırmadaki ResXDataNode öğelerden biri olabilir:

  • Verileriyle birlikte adlandırılmış kaynaklar. Bu durumda, ResXDataNode.FileRef özelliği null.

  • Kaynak verilerini içeren dosyanın adıyla birlikte adlandırılmış kaynaklar. Bu durumda, ResXDataNode.FileRef özelliği, dosya adı da dahil olmak üzere kaynak hakkında bilgi sağlayan bir ResXFileRef nesnesi döndürür. Göreli dosya adları kullanılıyorsa, göreli dosya yolu için bir başvuru noktası sağlamak üzere her zaman BasePath özelliğini ayarlamanız gerekir.

Adlandırılmış kaynakları kaynaklarını numaralandırmak yerine bir .resx dosyasından almak istiyorsanız, bir ResXResourceSet nesnesinin örneğini oluşturabilir ve GetString ve GetObject yöntemlerini çağırabilirsiniz.

Not

ResXResourceReader sınıfı, tüm üyeler için geçerli olan sınıf düzeyinde bir bağlantı talebi ve devralma talebi içerir. Anlık çağıranın veya türetilen sınıfın tam güven izni olmadığında bir SecurityException özel durumu oluşturulur.

Oluşturucular

ResXResourceReader(Stream)

Belirtilen akış için ResXResourceReader sınıfının yeni bir örneğini başlatır.

ResXResourceReader(Stream, AssemblyName[])

Bir akış ve derleme adları dizisi kullanarak ResXResourceReader sınıfının yeni bir örneğini başlatır.

ResXResourceReader(Stream, ITypeResolutionService)

Giriş akışı ve tür çözümleme hizmeti kullanarak ResXResourceReader sınıfının yeni bir örneğini başlatır.

ResXResourceReader(String)

Belirtilen kaynak dosyası için ResXResourceReader sınıfının yeni bir örneğini başlatır.

ResXResourceReader(String, AssemblyName[])

XML kaynak dosyası adı ve derleme adları dizisi kullanarak ResXResourceReader sınıfının yeni bir örneğini başlatır.

ResXResourceReader(String, ITypeResolutionService)

Bir dosya adı ve tür çözümleme hizmeti kullanarak ResXResourceReader sınıfının yeni bir örneğini başlatır.

ResXResourceReader(TextReader)

Belirtilen TextReaderiçin ResXResourceReader sınıfının yeni bir örneğini başlatır.

ResXResourceReader(TextReader, AssemblyName[])

bir TextReader nesnesi ve derleme adları dizisi kullanarak ResXResourceReader sınıfının yeni bir örneğini başlatır.

ResXResourceReader(TextReader, ITypeResolutionService)

Metin akışı okuyucusu ve tür çözümleme hizmeti kullanarak ResXResourceReader sınıfının yeni bir örneğini başlatır.

Özellikler

BasePath

ResXFileRef nesnesinde belirtilen göreli dosya yolunun temel yolunu alır veya ayarlar.

UseResXDataNodes

Geçerli XML kaynak dosyasını veya akışını okurken ResXDataNode nesnelerin döndürüldüğünü gösteren bir değer alır veya ayarlar.

Yöntemler

Close()

ResXResourceReadertarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

ResXResourceReader tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve isteğe bağlı olarak yönetilen kaynakları serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
Finalize()

Bu üye Finalize() yöntemini geçersiz kılar.

FromFileContents(String)

Yeni bir ResXResourceReader nesnesi oluşturur ve içeriği XML kaynak dosyası biçiminde olan bir dizeyi okumak için bu nesneyi başlatır.

FromFileContents(String, AssemblyName[])

Yeni bir ResXResourceReader nesnesi oluşturur ve içeriği XML kaynak dosyası biçiminde olan bir dizeyi okumak ve bir kaynakta belirtilen tür adlarını çözümlemek için AssemblyName nesneleri dizisi kullanmak için bu nesneyi başlatır.

FromFileContents(String, ITypeResolutionService)

Yeni bir ResXResourceReader nesnesi oluşturur ve içeriği XML kaynak dosyası biçiminde olan bir dizeyi okumak ve kaynakta belirtilen tür adlarını çözümlemek için bir ITypeResolutionService nesnesi kullanmak üzere bu nesneyi başlatır.

GetEnumerator()

Geçerli ResXResourceReader nesnesi için bir numaralandırıcı döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetMetadataEnumerator()

Geçerli XML kaynak dosyasından veya akışından tasarım zamanı özelliklerini alabilen bir sözlük numaralandırıcısı sağlar.

GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

IDisposable.Dispose()

ResXResourceReader tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve isteğe bağlı olarak yönetilen kaynakları serbest bırakır. Bu üyenin açıklaması için Dispose() yöntemine bakın.

IEnumerable.GetEnumerator()

Geçerli ResXResourceReader nesnesi için bir numaralandırıcı döndürür. Bu üyenin açıklaması için GetEnumerator() yöntemine bakın.

Uzantı Metotları

Cast<TResult>(IEnumerable)

Bir IEnumerable öğelerini belirtilen türe yayınlar.

OfType<TResult>(IEnumerable)

Bir IEnumerable öğelerini belirtilen türe göre filtreler.

AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini etkinleştirir.

AsQueryable(IEnumerable)

bir IEnumerableIQueryabledönüştürür.

Şunlara uygulanır

Ayrıca bkz.