ResXResourceReader Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Räknar upp XML-resursfiler (.resx) och strömmar och läser de sekventiella resursnamnen och värdeparen.
public ref class ResXResourceReader : System::Resources::IResourceReader
public class ResXResourceReader : System.Resources.IResourceReader
type ResXResourceReader = class
interface IResourceReader
interface IEnumerable
interface IDisposable
Public Class ResXResourceReader
Implements IResourceReader
- Arv
-
ResXResourceReader
- Implementeringar
Exempel
I följande exempel visas hur du använder en ResXResourceReader för att iterera genom resurserna i en .resx-fil.
ResXResourceReader
rsxr Först skapas för filen items.resx.
GetEnumerator Sedan används metoden för att skapa en IDictionaryEnumerator för att iterera genom resurserna och visa innehållet i konsolen.
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
Kommentarer
Important
Att anropa metoder från den här klassen med ej betrodda data är en säkerhetsrisk. Anropa metoderna från den här klassen endast med betrodda data. För mer information, se Verifiera alla indata.
Klassen ResXResourceReader tillhandahåller en standardimplementering av IResourceReader gränssnittet som läser resursinformation i ETT XML-format. Om du vill läsa resursinformation från ett binärt resursformat använder du ResourceReader klassen .
Du använder ResXResourceReader klassen för att räkna upp resurser i .resx-filer genom att bläddra i ordlisteuppräknaren (IDictionaryEnumerator) som returneras av GetEnumerator metoden. Du anropar metoderna som tillhandahålls av IDictionaryEnumerator för att gå vidare till nästa resurs och för att läsa namnet och värdet för varje resurs i .resx-filen.
Note
Klassen ResXResourceReader innehåller två uppräknare. Metoden ResXResourceReader.GetEnumerator returnerar ett IDictionaryEnumerator objekt. Vi rekommenderar att du använder den här metoden för att räkna upp resurser. Metoden ResXResourceReader.IEnumerable.GetEnumerator är en explicit gränssnittsimplementering som returnerar ett IEnumerator objekt. Vi rekommenderar inte att det används.
I följande exempel används GetEnumerator metoden för att hämta ett IDictionaryEnumerator objekt som används för att räkna upp resurserna i en .resx-fil. Exemplet innehåller en CreateResourceFile rutin som skapar den nödvändiga resursfilen.
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
Om egenskapen UseResXDataNodes är trueär värdet för IDictionaryEnumerator.Value egenskapen ett ResXDataNode objekt i stället för resursvärdet. Detta gör ett resursobjekts kommentar tillgänglig från egenskapen ResXDataNode.Comment . I följande exempel anges UseResXDataNodes egenskapen till true och resurserna räknas upp i en .resx-fil.
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
Om UseResXDataNodes är truekan objekten ResXDataNode i uppräkningen vara antingen:
Namngivna resurser tillsammans med deras data. I det här fallet är ResXDataNode.FileRefegenskapen
null.Namngivna resurser tillsammans med namnet på filen som innehåller resursdata. I det här fallet returnerar egenskapen ResXDataNode.FileRef ett ResXFileRef objekt som innehåller information om resursen, inklusive dess filnamn. Om relativa filnamn används bör du alltid ange BasePath egenskapen för att ange en referenspunkt för den relativa filsökvägen.
Om du vill hämta namngivna resurser från en .resx-fil i stället för att räkna upp dess resurser kan du instansiera ett ResXResourceSet objekt och anropa dess GetString och GetObject metoder.
Note
Klassen ResXResourceReader innehåller ett länkbehov och ett arvskrav på klassnivå som gäller för alla medlemmar. Ett SecurityException undantag utlöses när antingen den omedelbara anroparen eller den härledda klassen inte har fullständig förtroendebehörighet.
Konstruktorer
| Name | Description |
|---|---|
| ResXResourceReader(Stream, AssemblyName[]) |
Initierar en ny instans av klassen med hjälp av ResXResourceReader en ström och en matris med sammansättningsnamn. |
| ResXResourceReader(Stream, ITypeResolutionService) |
Initierar en ny instans av klassen med hjälp av ResXResourceReader en indataström och en typmatchningstjänst. |
| ResXResourceReader(Stream) |
Initierar en ny instans av ResXResourceReader klassen för den angivna strömmen. |
| ResXResourceReader(String, AssemblyName[]) |
Initierar en ny instans av klassen med hjälp av ResXResourceReader ett XML-resursfilnamn och en matris med sammansättningsnamn. |
| ResXResourceReader(String, ITypeResolutionService) |
Initierar en ny instans av ResXResourceReader klassen med ett filnamn och en typmatchningstjänst. |
| ResXResourceReader(String) |
Initierar en ny instans av ResXResourceReader klassen för den angivna resursfilen. |
| ResXResourceReader(TextReader, AssemblyName[]) |
Initierar en ny instans av klassen med hjälp av ResXResourceReader ett TextReader objekt och en matris med sammansättningsnamn. |
| ResXResourceReader(TextReader, ITypeResolutionService) |
Initierar en ny instans av klassen med hjälp av ResXResourceReader en textströmsläsare och en typmatchningstjänst. |
| ResXResourceReader(TextReader) |
Initierar en ny instans av ResXResourceReader klassen för den angivna TextReader. |
Egenskaper
| Name | Description |
|---|---|
| BasePath |
Hämtar eller anger bassökvägen för den relativa filsökväg som anges i ett ResXFileRef objekt. |
| UseResXDataNodes |
Hämtar eller anger ett värde som anger om ResXDataNode objekt returneras när du läser den aktuella XML-resursfilen eller dataströmmen. |
Metoder
| Name | Description |
|---|---|
| Close() |
Släpper alla resurser som används av ResXResourceReader. |
| Dispose(Boolean) |
Släpper de ohanterade resurser som används av ResXResourceReader och släpper eventuellt de hanterade resurserna. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Finalize() |
Den här medlemmen åsidosätter Finalize() metoden. |
| FromFileContents(String, AssemblyName[]) |
Skapar ett nytt ResXResourceReader objekt och initierar det för att läsa en sträng vars innehåll är i form av en XML-resursfil och för att använda en matris med AssemblyName objekt för att matcha typnamn som anges i en resurs. |
| FromFileContents(String, ITypeResolutionService) |
Skapar ett nytt ResXResourceReader objekt och initierar det för att läsa en sträng vars innehåll är i form av en XML-resursfil och för att använda ett ITypeResolutionService objekt för att matcha de typnamn som anges i en resurs. |
| FromFileContents(String) |
Skapar ett nytt ResXResourceReader objekt och initierar det för att läsa en sträng vars innehåll är i form av en XML-resursfil. |
| GetEnumerator() |
Returnerar en uppräknare för det aktuella ResXResourceReader objektet. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetMetadataEnumerator() |
Innehåller en ordlisteuppräknare som kan hämta designtidsegenskaperna från den aktuella XML-resursfilen eller dataströmmen. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Släpper de ohanterade resurser som används av ResXResourceReader och släpper eventuellt de hanterade resurserna. En beskrivning av den här medlemmen finns i Dispose() metoden . |
| IEnumerable.GetEnumerator() |
Returnerar en uppräknare för det aktuella ResXResourceReader objektet. En beskrivning av den här medlemmen finns i GetEnumerator() metoden . |
Tilläggsmetoder
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Möjliggör parallellisering av en fråga. |
| AsQueryable(IEnumerable) |
Konverterar en IEnumerable till en IQueryable. |
| Cast<TResult>(IEnumerable) |
Omvandlar elementen i en IEnumerable till den angivna typen. |
| OfType<TResult>(IEnumerable) |
Filtrerar elementen i en IEnumerable baserat på en angiven typ. |