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 'nin nasıl kullanılacağı ResXResourceReader gösterilmektedir. İlk olarak, ResXResourceReaderrsxr dosyası items.resxiçin oluşturulur. Ardından, GetEnumerator kaynakları yinelemek ve içeriği konsolda görüntülemek için bir IDictionaryEnumerator oluşturmak için yöntemi 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.

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

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 sınıfını GetEnumerator kullanırsınızResXResourceReader. Bir sonraki kaynağa ilerlemek ve .resx dosyasındaki her kaynağın adını ve değerini okumak için tarafından IDictionaryEnumerator sağlanan yöntemleri çağırırsınız.

Not

sınıfı ResXResourceReader 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, bir nesnesi döndüren açık bir IEnumerator arabirim uygulamasıdır; kullanılmasını önermeyiz.

Aşağıdaki örnek, bir .resx dosyasındaki kaynakları listelemek için kullanılan bir IDictionaryEnumerator nesneyi almak için yöntemini kullanırGetEnumerator. Örnek, gerekli kaynak dosyasını oluşturan bir CreateResourceFile yordam 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 isetrue, özelliğin IDictionaryEnumerator.Value değeri kaynak değeri yerine bir ResXDataNode nesnedir. Bu, bir kaynak öğesinin açıklamasını özelliğinden ResXDataNode.Comment kullanılabilir hale getirir. Aşağıdaki örnek özelliğini olarak true ayarlar UseResXDataNodes 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

ise UseResXDataNodestrue, ResXDataNode numaralandırmadaki öğelerden biri olabilir:

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

  • Kaynak verilerini içeren dosyanın adıyla birlikte adlandırılmış kaynaklar. Bu durumda özelliği, ResXDataNode.FileRef 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, her zaman göreli dosya yolu için bir başvuru noktası sağlamak üzere özelliğini ayarlamanız BasePath gerekir.

Adlandırılmış kaynakları kaynaklarını listelemek yerine bir .resx dosyasından almak istiyorsanız, bir ResXResourceSet nesnenin örneğini oluşturabilir ve ve GetStringGetObject yöntemlerini çağırabilirsiniz.

Not

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

Oluşturucular

ResXResourceReader(Stream)

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

ResXResourceReader(Stream, AssemblyName[])

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

ResXResourceReader(Stream, ITypeResolutionService)

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

ResXResourceReader(String)

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

ResXResourceReader(String, AssemblyName[])

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

ResXResourceReader(String, ITypeResolutionService)

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

ResXResourceReader(TextReader)

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

ResXResourceReader(TextReader, AssemblyName[])

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

ResXResourceReader(TextReader, ITypeResolutionService)

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

Özellikler

BasePath

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

UseResXDataNodes

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

Yöntemler

Close()

ResXResourceReader tarafı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 yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

Equals(Object)

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

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

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

FromFileContents(String)

Yeni ResXResourceReader bir nesne 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 ResXResourceReader bir nesne 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 bir nesne dizisi AssemblyName kullanmak için bu nesneyi başlatır.

FromFileContents(String, ITypeResolutionService)

Yeni ResXResourceReader bir nesne 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 bir ITypeResolutionService nesne kullanmak için bu nesneyi başlatır.

GetEnumerator()

Geçerli ResXResourceReader nesne 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()

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

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

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

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

Geçerli nesneyi temsil eden dizeyi 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 yönetilen kaynakları isteğe bağlı olarak serbest bırakır. Bu üyenin açıklaması için yöntemine Dispose() bakın.

IEnumerable.GetEnumerator()

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

Uzantı Metotları

Cast<TResult>(IEnumerable)

öğesinin IEnumerable öğelerini belirtilen türe atar.

OfType<TResult>(IEnumerable)

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

AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini sağlar.

AsQueryable(IEnumerable)

bir IEnumerable öğesini öğesine IQueryabledönüştürür.

Şunlara uygulanır

Ayrıca bkz.