ResXResourceReader Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Listet XML-Ressourcendateien (.resx) und -streams auf und liest die sequenziellen Paare von Ressourcennamen und -werten.
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
- Vererbung
-
ResXResourceReader
- Implementiert
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie Sie ein ResXResourceReader verwenden, um die Ressourcen in einer RESX-Datei zu durchlaufen. Zuerst wird für ResXResourceReaderrsxr
die Datei items.resx
erstellt. Als Nächstes wird die GetEnumerator -Methode verwendet, um ein IDictionaryEnumerator zu erstellen, um die Ressourcen zu durchlaufen und den Inhalt in der Konsole anzuzeigen.
#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
Hinweise
Wichtig
Das Aufrufen von Methoden aus dieser Klasse mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. Rufen Sie die Methoden aus dieser Klasse nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.
Die ResXResourceReader -Klasse stellt eine Standardimplementierung der Schnittstelle bereit, die IResourceReader Ressourceninformationen in einem XML-Format liest. Verwenden Sie die ResourceReader -Klasse, um Ressourceninformationen aus einem binären Ressourcenformat zu lesen.
Sie verwenden die ResXResourceReader -Klasse, um Ressourcen in RESX-Dateien aufzulisten, indem Sie den wörterbuchumerator (IDictionaryEnumerator) durchlaufen, der von der GetEnumerator -Methode zurückgegeben wird. Sie rufen die von bereitgestellten IDictionaryEnumerator Methoden auf, um zur nächsten Ressource zu wechseln und den Namen und Den Wert jeder Ressource in der RESX-Datei zu lesen.
Hinweis
Die ResXResourceReader -Klasse stellt zwei Enumeratoren bereit. Die ResXResourceReader.GetEnumerator -Methode gibt ein IDictionaryEnumerator -Objekt zurück. Es wird empfohlen, diese Methode zum Auflisten von Ressourcen zu verwenden. Die ResXResourceReader.IEnumerable.GetEnumerator -Methode ist eine explizite Schnittstellenimplementierung, die ein IEnumerator -Objekt zurückgibt. Die Verwendung wird nicht empfohlen.
Im folgenden Beispiel wird die GetEnumerator -Methode verwendet, um ein IDictionaryEnumerator -Objekt abzurufen, das zum Auflisten der Ressourcen in einer RESX-Datei verwendet wird. Das Beispiel enthält eine CreateResourceFile
Routine, die die erforderliche Ressourcendatei erstellt.
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
Wenn die UseResXDataNodes -Eigenschaft ist true
, ist der Wert der IDictionaryEnumerator.Value -Eigenschaft ein ResXDataNode -Objekt und nicht der Ressourcenwert. Dadurch wird der Kommentar eines Ressourcenelements über die ResXDataNode.Comment -Eigenschaft verfügbar. Im folgenden Beispiel wird die UseResXDataNodes -Eigenschaft auf true
festgelegt und die Ressourcen in einer RESX-Datei aufgelistet.
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
Wenn UseResXDataNodes ist true
, können die ResXDataNode Elemente in der Enumeration folgendes sein:
Benannte Ressourcen zusammen mit ihren Daten. In diesem Fall ist
null
die ResXDataNode.FileRef -Eigenschaft .Benannte Ressourcen zusammen mit dem Namen der Datei, die die Ressourcendaten enthält. In diesem Fall gibt die ResXDataNode.FileRef -Eigenschaft ein ResXFileRef -Objekt zurück, das Informationen zur Ressource einschließlich ihres Dateinamens bereitstellt. Wenn relative Dateinamen verwendet werden, sollten Sie die BasePath Eigenschaft immer so festlegen, dass sie einen Verweispunkt für den relativen Dateipfad bereitstellt.
Wenn Sie benannte Ressourcen aus einer RESX-Datei abrufen möchten, anstatt die Ressourcen aufzulisten, können Sie ein ResXResourceSet Objekt instanziieren und dessen GetString
Methoden und GetObject
aufrufen.
Hinweis
Die ResXResourceReader -Klasse enthält eine Linkanforderung und eine Vererbungsanforderung auf Klassenebene, die für alle Member gilt. Eine SecurityException Ausnahme wird ausgelöst, wenn entweder der unmittelbare Aufrufer oder die abgeleitete Klasse nicht über die voll vertrauenswürdige Berechtigung verfügt.
Konstruktoren
ResXResourceReader(Stream) |
Initialisiert eine neue Instanz der ResXResourceReader-Klasse für den angegebenen Stream. |
ResXResourceReader(Stream, AssemblyName[]) |
Initialisiert mit einem Stream und einem Array von Assemblynamen eine neue Instanz der ResXResourceReader-Klasse. |
ResXResourceReader(Stream, ITypeResolutionService) |
Initialisiert mit einem Eingabestream und einem Typauflösungsdienst eine neue Instanz der ResXResourceReader-Klasse. |
ResXResourceReader(String) |
Initialisiert eine neue Instanz der ResXResourceReader-Klasse für die angegebene Ressourcendatei. |
ResXResourceReader(String, AssemblyName[]) |
Initialisiert mit einem XML-Ressourcendateinamen und einem Array von Assemblynamen eine neue Instanz der ResXResourceReader-Klasse. |
ResXResourceReader(String, ITypeResolutionService) |
Initialisiert mit einem Dateinamen und einem Typauflösungsdienst eine neue Instanz der ResXResourceReader-Klasse. |
ResXResourceReader(TextReader) |
Initialisiert eine neue Instanz der ResXResourceReader-Klasse für den angegebenen TextReader. |
ResXResourceReader(TextReader, AssemblyName[]) |
Initialisiert mit einem ResXResourceReader-Objekt und einem Array von Assemblynamen eine neue Instanz der TextReader-Klasse. |
ResXResourceReader(TextReader, ITypeResolutionService) |
Initialisiert mit einem Textstreamreader und einem Typauflösungsdienst eine neue Instanz der ResXResourceReader-Klasse. |
Eigenschaften
BasePath |
Ruft den Basispfad für den in einem ResXFileRef-Objekt angegebenen relativen Pfad ab oder legt diesen fest. |
UseResXDataNodes |
Ruft einen Wert ab, der angibt, ob beim Lesen der aktuellen XML-Ressourcendatei oder des Streams ResXDataNode-Objekte zurückgegeben werden, oder legt diesen fest. |
Methoden
Close() |
Gibt alle vom ResXResourceReader verwendeten Ressourcen frei. |
Dispose(Boolean) |
Gibt die von ResXResourceReader verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
Finalize() |
Dieser Member überschreibt die Finalize()-Methode. |
FromFileContents(String) |
Erstellt ein neues ResXResourceReader-Objekt und initialisiert dieses, um eine Zeichenfolge zu lesen, deren Inhalt das Format einer XML-Ressourcendatei hat. |
FromFileContents(String, AssemblyName[]) |
Erstellt ein neues ResXResourceReader-Objekt und initialisiert dieses, um eine Zeichenfolge zu lesen, deren Inhalt das Format einer XML-Ressourcendatei hat, und um ein Array von AssemblyName-Objekten für das Auflösen von in einer Ressource angegebenen Typnamen zu verwenden. |
FromFileContents(String, ITypeResolutionService) |
Erstellt ein neues ResXResourceReader-Objekt und initialisiert dieses, um eine Zeichenfolge zu lesen, deren Inhalt das Format einer XML-Ressourcendatei hat, und um ein ITypeResolutionService-Objekt für das Auflösen von in einer Ressource angegebenen Typnamen zu verwenden. |
GetEnumerator() |
Gibt einen Enumerator für das aktuelle ResXResourceReader-Objekt zurück. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetMetadataEnumerator() |
Stellt einen Wörterbuchenumerator bereit, der die Entwurfszeiteigenschaften aus der aktuellen XML-Ressourcendatei oder dem Stream abrufen kann. |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
IDisposable.Dispose() |
Gibt die von ResXResourceReader verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei. Eine Beschreibung dieses Members finden Sie unter der Dispose()-Methode. |
IEnumerable.GetEnumerator() |
Gibt einen Enumerator für das aktuelle ResXResourceReader-Objekt zurück. Eine Beschreibung dieses Members finden Sie unter der GetEnumerator()-Methode. |
Erweiterungsmethoden
Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um |
OfType<TResult>(IEnumerable) |
Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs |
AsParallel(IEnumerable) |
Ermöglicht die Parallelisierung einer Abfrage. |
AsQueryable(IEnumerable) |
Konvertiert einen IEnumerable in einen IQueryable. |
Gilt für:
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für