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

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ı numaralandırmak için sınıfını GetEnumerator kullanırsınızResXResourceReader. 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

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

Aşağıdaki örnek, bir .resx dosyasındaki kaynakları numaralandırmak 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 true olarak 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 nesne döndürür. Göreli dosya adları kullanılıyorsa, özelliği her zaman göreli dosya yolu için bir başvuru noktası sağlayacak şekilde ayarlamanız BasePath gerekir.

Adlandırılmış kaynakları kaynaklarını numaralandırmak 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. Anlık SecurityException çağıranın veya türetilen sınıfın tam güven izni olmadığında bir özel durum oluşturulur.

Oluşturucular

Name Description
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(Stream)

Belirtilen akış 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 yeni bir örneğini ResXResourceReader başlatır.

ResXResourceReader(String, ITypeResolutionService)

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

ResXResourceReader(String)

Belirtilen kaynak dosyası iç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 yeni bir örneğini ResXResourceReader başlatır.

ResXResourceReader(TextReader, ITypeResolutionService)

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

ResXResourceReader(TextReader)

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

Özellikler

Name Description
BasePath

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

UseResXDataNodes

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

Yöntemler

Name Description
Close()

tarafından ResXResourceReaderkullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

tarafından ResXResourceReader 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 yöntemini geçersiz kılar Finalize() .

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.

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.

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

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ı

Name Description
IDisposable.Dispose()

tarafından ResXResourceReader 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 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ı

Name Description
AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini etkinleştirir.

AsQueryable(IEnumerable)

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

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

Belirtilen türe göre bir IEnumerable öğesinin öğelerini filtreler.

Şunlara uygulanır

Ayrıca bkz.