ResXResourceReader Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Enumera os arquivos e fluxos de recurso de XML (.resx) e lê os pares de nome e valor do recurso sequencial.
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
- Herança
-
ResXResourceReader
- Implementações
Exemplos
O exemplo a seguir demonstra como usar um ResXResourceReader para iterar pelos recursos em um arquivo .resx. Primeiro, o ResXResourceReaderrsxr
é criado para o arquivo items.resx
. Em seguida, o GetEnumerator método é usado para criar um IDictionaryEnumerator para iterar pelos recursos e exibir o conteúdo para o console.
#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
Comentários
Importante
Chamar métodos desta classe quando você tiver dados não confiáveis é um risco à segurança. Chame os métodos dessa classe somente quando você tiver dados confiáveis. Para obter mais informações, consulte Validar todas as entradas.
A ResXResourceReader classe fornece uma implementação padrão da IResourceReader interface que lê informações de recurso em um formato XML. Para ler informações de recursos de um formato de recurso binário, use a ResourceReader classe .
Use a ResXResourceReader classe para enumerar recursos em arquivos .resx percorrendo o enumerador de dicionário (IDictionaryEnumerator) retornado pelo GetEnumerator método . Você chama os métodos fornecidos por IDictionaryEnumerator para avançar para o próximo recurso e para ler o nome e o valor de cada recurso no arquivo .resx.
Observação
A ResXResourceReader classe fornece dois enumeradores. O ResXResourceReader.GetEnumerator método retorna um IDictionaryEnumerator objeto ; recomendamos que você use esse método para enumerar recursos. O ResXResourceReader.IEnumerable.GetEnumerator método é uma implementação de interface explícita que retorna um IEnumerator objeto ; não recomendamos seu uso.
O exemplo a seguir usa o GetEnumerator método para obter um IDictionaryEnumerator objeto usado para enumerar os recursos em um arquivo .resx. O exemplo inclui uma CreateResourceFile
rotina que cria o arquivo de recurso necessário.
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
Se a UseResXDataNodes propriedade for true
, o valor da IDictionaryEnumerator.Value propriedade será um ResXDataNode objeto em vez do valor do recurso. Isso disponibiliza o comentário de um item de recurso na ResXDataNode.Comment propriedade . O exemplo a seguir define a UseResXDataNodes propriedade como true
e enumera os recursos em um arquivo .resx,
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
Se UseResXDataNodes for true
, os ResXDataNode itens na enumeração poderão ser:
Recursos nomeados junto com seus dados. Nesse caso, a ResXDataNode.FileRef propriedade é
null
.Recursos nomeados junto com o nome do arquivo que contém os dados do recurso. Nesse caso, a ResXDataNode.FileRef propriedade retorna um ResXFileRef objeto que fornece informações sobre o recurso, incluindo seu nome de arquivo. Se nomes de arquivo relativos forem usados, você sempre deverá definir a BasePath propriedade para fornecer um ponto de referência para o caminho de arquivo relativo.
Se você quiser recuperar recursos nomeados de um arquivo .resx em vez de enumerar seus recursos, poderá instanciar um ResXResourceSet objeto e chamar seus GetString
métodos e GetObject
.
Observação
A ResXResourceReader classe contém uma demanda de link e uma demanda de herança no nível da classe que se aplica a todos os membros. Uma SecurityException exceção é gerada quando o chamador imediato ou a classe derivada não tem permissão de confiança total.
Construtores
ResXResourceReader(Stream) |
Inicializa uma nova instância da classe ResXResourceReader para o fluxo especificado. |
ResXResourceReader(Stream, AssemblyName[]) |
Inicializa uma nova instância da classe ResXResourceReader usando um fluxo e uma matriz de nomes de assembly. |
ResXResourceReader(Stream, ITypeResolutionService) |
Inicializa uma nova instância da classe ResXResourceReader usando um fluxo de entrada e um serviço de resolução de tipo. |
ResXResourceReader(String) |
Inicializa uma nova instância da classe ResXResourceReader para o arquivo de recurso especificado. |
ResXResourceReader(String, AssemblyName[]) |
Inicializa uma nova instância da classe ResXResourceReader usando um nome de arquivo de recurso XML e uma matriz de nomes de assembly. |
ResXResourceReader(String, ITypeResolutionService) |
Inicializa uma nova instância da classe ResXResourceReader usando um nome de arquivo e um serviço de resolução de tipo. |
ResXResourceReader(TextReader) |
Inicializa uma nova instância da classe ResXResourceReader para o TextReader especificado. |
ResXResourceReader(TextReader, AssemblyName[]) |
Inicializa uma nova instância da classe ResXResourceReader usando um objeto TextReader e uma matriz de nomes de assembly. |
ResXResourceReader(TextReader, ITypeResolutionService) |
Inicializa uma nova instância da classe ResXResourceReader usando um leitor de fluxo de texto e um serviço de resolução de tipo. |
Propriedades
BasePath |
Obtém ou define o caminho base para o caminho relativo do arquivo especificado em um objeto ResXFileRef. |
UseResXDataNodes |
Obtém ou define um valor que indica se ResXDataNode objetos são retornados ao ler o fluxo ou arquivo de recurso XML atual. |
Métodos
Close() |
Libera todos os recursos usados pelo ResXResourceReader. |
Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo ResXResourceReader e opcionalmente libera os recursos gerenciados. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
Finalize() |
Esse membro substitui o método Finalize(). |
FromFileContents(String) |
Cria um novo objeto ResXResourceReader e o inicializa para ler uma cadeia de caracteres cujos elementos estão na forma de um arquivo de recurso XML. |
FromFileContents(String, AssemblyName[]) |
Cria um novo objeto ResXResourceReader e o inicializa para ler uma cadeia de caracteres cujo conteúdo está na forma de um arquivo de recurso XML e para usar uma matriz de objetos AssemblyName para resolver nomes de tipo especificados em um recurso. |
FromFileContents(String, ITypeResolutionService) |
Cria um novo objeto ResXResourceReader e o inicializa para ler uma cadeia de caracteres cujo conteúdo está na forma de um arquivo de recurso XML e para usar um objeto ITypeResolutionService para resolver nomes de tipo especificados em um recurso. |
GetEnumerator() |
Retorna um enumerador para o objeto ResXResourceReader atual. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetMetadataEnumerator() |
Fornece um enumerador de dicionário que pode recuperar as propriedades de tempo de design do fluxo ou arquivo de recurso XML. |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
IDisposable.Dispose() |
Libera os recursos não gerenciados usados pelo ResXResourceReader e opcionalmente libera os recursos gerenciados. Para obter uma descrição desse membro, consulte o método Dispose(). |
IEnumerable.GetEnumerator() |
Retorna um enumerador para o objeto ResXResourceReader atual. Para obter uma descrição desse membro, consulte o método GetEnumerator(). |
Métodos de Extensão
Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |
AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |
Aplica-se a
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários