ResXResourceReader Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Számba adja az XML-erőforrások (.resx) fájljait és streameit, és beolvassa a szekvenciális erőforrás nevét és értékpárjait.
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
- Öröklődés
-
ResXResourceReader
- Megvalósítás
Példák
Az alábbi példa bemutatja, hogyan használható egy ResXResourceReader .resx fájl erőforrásain keresztüli iterálásra. Először a ResXResourceReaderrsxr fájlhoz items.resxjön létre. Ezután a GetEnumerator metódussal létrehozunk egy IDictionaryEnumerator iterátumot az erőforrásokon keresztül, és megjelenítse a tartalmat a konzolon.
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
Megjegyzések
Important
Az osztályból származó metódusok nem megbízható adatokkal való meghívása biztonsági kockázatot jelent. Csak megbízható adatokkal hívja meg ennek az osztálynak a metódusait. További információ: Minden bemenet ellenőrzése.
Az ResXResourceReader osztály az erőforrás-információkat XML formátumban beolvasó felület alapértelmezett implementációját IResourceReader biztosítja. Ha bináris erőforrásformátumból szeretné beolvasni az erőforrás-információkat, használja az osztályt ResourceReader .
Az osztály segítségével számba kell adnia az ResXResourceReader erőforrásokat a .resx fájlokban a metódus által visszaadott szótár-számozó (IDictionaryEnumerator) bejárásával GetEnumerator . Meghívja a következő erőforráshoz való továbblépéshez és a .resx fájlban található egyes erőforrások nevének és értékének beolvasásához megadott IDictionaryEnumerator metódusokat.
Note
Az ResXResourceReader osztály két enumerátort biztosít. A ResXResourceReader.GetEnumerator metódus egy IDictionaryEnumerator objektumot ad vissza. Javasoljuk, hogy ezt a módszert használja az erőforrások számbavételéhez. A ResXResourceReader.IEnumerable.GetEnumerator módszer egy explicit felületi implementáció, amely egy IEnumerator objektumot ad vissza, nem javasoljuk a használatát.
Az alábbi példa egy GetEnumerator .resx fájl erőforrásainak számbavételéhez használt objektum beszerzésére IDictionaryEnumerator használja a metódust. A példa tartalmaz egy rutint CreateResourceFile , amely létrehozza a szükséges erőforrásfájlt.
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
Ha a UseResXDataNodes tulajdonság az true, akkor a IDictionaryEnumerator.Value tulajdonság értéke nem az erőforrásérték, hanem egy ResXDataNode objektum. Így egy erőforráselem megjegyzése elérhetővé válik a ResXDataNode.Comment tulajdonságból. Az alábbi példa egy UseResXDataNodes .resx fájl erőforrásait true állítja be és sorolja fel a tulajdonságot.
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
Ha UseResXDataNodes igen true, az ResXDataNode enumerálás elemei a következők lehetnek:
Elnevezett erőforrások az adataikkal együtt. Ebben az esetben a ResXDataNode.FileRef tulajdonság
null.Elnevezett erőforrások az erőforrásadatokat tartalmazó fájl nevével együtt. Ebben az esetben a ResXDataNode.FileRef tulajdonság egy ResXFileRef olyan objektumot ad vissza, amely információt nyújt az erőforrásról, beleértve a fájlnevét is. Ha relatív fájlneveket használ, a tulajdonságot mindig úgy kell beállítania BasePath , hogy referenciapontot adjon a relatív fájl elérési útjának.
Ha az erőforrások számbavétele helyett elnevezett erőforrásokat szeretne lekérni egy .resx fájlból, példányosíthat egy ResXResourceSet objektumot, és meghívhatja azokat és GetString a GetObject metódusokat.
Note
Az ResXResourceReader osztály az összes tagra vonatkozó hivatkozási és öröklési igényt tartalmaz az osztály szintjén. Kivétel SecurityException akkor lép fel, ha az azonnali hívó vagy a származtatott osztály nem rendelkezik teljes megbízhatósági engedéllyel.
Konstruktorok
| Name | Description |
|---|---|
| ResXResourceReader(Stream, AssemblyName[]) |
Inicializálja az ResXResourceReader osztály új példányát egy stream és egy szerelvénynevek tömbje használatával. |
| ResXResourceReader(Stream, ITypeResolutionService) |
Inicializálja az ResXResourceReader osztály új példányát egy bemeneti stream és egy típusfeloldási szolgáltatás használatával. |
| ResXResourceReader(Stream) |
Inicializálja a ResXResourceReader megadott stream osztályának új példányát. |
| ResXResourceReader(String, AssemblyName[]) |
Inicializálja az ResXResourceReader osztály új példányát EGY XML-erőforrásfájlnév és egy szerelvénynevek tömbje használatával. |
| ResXResourceReader(String, ITypeResolutionService) |
Inicializálja az ResXResourceReader osztály új példányát egy fájlnév és egy típusfeloldási szolgáltatás használatával. |
| ResXResourceReader(String) |
Inicializálja a ResXResourceReader megadott erőforrásfájl osztályának új példányát. |
| ResXResourceReader(TextReader, AssemblyName[]) |
Inicializálja az ResXResourceReader osztály új példányát egy objektum és egy TextReader szerelvénynevek tömbje használatával. |
| ResXResourceReader(TextReader, ITypeResolutionService) |
Inicializálja az ResXResourceReader osztály új példányát egy szövegstream-olvasó és egy típusfeloldási szolgáltatás használatával. |
| ResXResourceReader(TextReader) |
Inicializálja a ResXResourceReader megadott TextReaderosztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| BasePath |
Lekéri vagy beállítja az objektumban ResXFileRef megadott relatív fájl elérési útjának alap elérési útját. |
| UseResXDataNodes |
Lekéri vagy beállítja azt az értéket, amely jelzi, hogy az aktuális XML-erőforrásfájl vagy -adatfolyam olvasásakor visszaadott-e ResXDataNode objektumokat. |
Metódusok
| Name | Description |
|---|---|
| Close() |
Felszabadítja a .-hez használt összes erőforrást ResXResourceReader. |
| Dispose(Boolean) |
Felszabadítja a felügyelt erőforrások által ResXResourceReader használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat. |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| Finalize() |
Ez a tag felülírja a metódust Finalize() . |
| FromFileContents(String, AssemblyName[]) |
Létrehoz egy új ResXResourceReader objektumot, és inicializálja egy olyan sztring olvasásához, amelynek tartalma XML-erőforrásfájl formájában van, és objektumtömb AssemblyName használatával oldja fel az erőforrásban megadott típusneveket. |
| FromFileContents(String, ITypeResolutionService) |
Létrehoz egy új ResXResourceReader objektumot, és inicializálja azt egy XML-erőforrásfájl formájában található sztring olvasásához, és egy objektum használatával ITypeResolutionService feloldja az erőforrásban megadott típusneveket. |
| FromFileContents(String) |
Létrehoz egy új ResXResourceReader objektumot, és inicializálja egy olyan sztring olvasásához, amelynek tartalma XML-erőforrásfájl formájában van. |
| GetEnumerator() |
Az aktuális ResXResourceReader objektum enumerátorát adja vissza. |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetMetadataEnumerator() |
Szótár-enumerátort biztosít, amely lekérheti a tervezési idő tulajdonságait az aktuális XML-erőforrásfájlból vagy -adatfolyamból. |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Felszabadítja a felügyelt erőforrások által ResXResourceReader használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat. Ennek a tagnak a leírását a Dispose() metódus ismerteti. |
| IEnumerable.GetEnumerator() |
Az aktuális ResXResourceReader objektum enumerátorát adja vissza. Ennek a tagnak a leírását a GetEnumerator() metódus ismerteti. |
Bővítő metódusok
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Lehetővé teszi a lekérdezés párhuzamosítását. |
| AsQueryable(IEnumerable) |
Átalakítja az egyiket IEnumerableIQueryable. |
| Cast<TResult>(IEnumerable) |
Egy elem elemeit IEnumerable a megadott típusra veti. |
| OfType<TResult>(IEnumerable) |
Egy adott típus alapján szűri IEnumerable egy adott elem elemeit. |