ResXResourceReader Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.resx
dosyası 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 true
ise, 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
true
ise, 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.
- ResXResourceWriter
- Desktop Apps için Kaynak Dosyaları Oluşturma
- Program Aracılığıyla .resx Dosyalarıyla Çalışma