Comparteix a través de


ResXDataNode Clase

Definición

Representa un elemento en un archivo de recursos XML (.resx).

public ref class ResXDataNode sealed : System::Runtime::Serialization::ISerializable
[System.Serializable]
public sealed class ResXDataNode : System.Runtime.Serialization.ISerializable
public sealed class ResXDataNode : System.Runtime.Serialization.ISerializable
[<System.Serializable>]
type ResXDataNode = class
    interface ISerializable
type ResXDataNode = class
    interface ISerializable
Public NotInheritable Class ResXDataNode
Implements ISerializable
Herencia
ResXDataNode
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente se usa el ResXResourceReader.GetEnumerator método para obtener un IDictionaryEnumerator objeto que se usa para enumerar los ResXDataNode objetos de un archivo .resx. En el ejemplo se incluye una CreateResourceFile rutina que crea el archivo de recursos XML necesario.

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", "Estimated population, 2010", 
                            "The area in square miles", "Capital city or chief administrative center", 
                            "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}    // Estimated population, 2010
//    Area:                Area                 // The area in square miles
//    Capital:             Capital              // Capital city or chief administrative center
//    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", "Estimated population, 2010", 
                                   "The area in square miles", "Capital city or chief administrative center", 
                                   "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}    // Estimated population, 2010
'    Area:                Area                 // The area in square miles
'    Capital:             Capital              // Capital city or chief administrative center
'    LCity:               Largest City         // The largest city based on 2010 data

Dado que la UseResXDataNodes propiedad es true, el valor de la IDictionaryEnumerator.Value propiedad es un ResXDataNode objeto en lugar del valor del recurso. Esto hace que el comentario de un elemento de recurso esté disponible en la ResXDataNode.Comment propiedad .

Comentarios

Importante

Llamar a métodos de esta clase con datos que no son de confianza supone un riesgo de seguridad. Llame a los métodos de esta clase solo con datos de confianza. Para obtener más información, vea Validar todas las entradas.

La ResXDataNode clase admite la representación de tipos de datos enriquecidos dentro de un archivo de recursos. Puede admitir el almacenamiento de cualquier objeto en un archivo de recursos, siempre y cuando el objeto admita editores de tipos y serialización.

Puede crear un ResXDataNode objeto llamando a uno de sus constructores de clase sobrecargados. Después, puede agregar el elemento de recurso o elemento a un archivo de recursos llamando al ResXResourceWriter.AddResource método .

Para recuperar un objeto existente ResXDataNode , debe enumerar los ResXDataNode objetos de un archivo de recursos XML creando una instancia de un ResXResourceReader objeto, estableciendo la ResXResourceReader.UseResXDataNodes propiedad trueen y llamando al ResXResourceReader.GetEnumerator método para obtener un enumerador. En este ejemplo se ilustra.

Constructores

ResXDataNode(String, Object)

Inicializa una nueva instancia de la clase ResXDataNode.

ResXDataNode(String, Object, Func<Type,String>)

Inicializa una nueva instancia de la clase ResXDataNode.

ResXDataNode(String, ResXFileRef)

Inicializa una nueva instancia de la clase ResXDataNode con una referencia a un archivo de recursos.

ResXDataNode(String, ResXFileRef, Func<Type,String>)

Inicializa una nueva instancia de la clase ResXDataNode con una referencia a un archivo de recursos.

Propiedades

Comment

Obtiene o establece un comentario arbitrario con respecto a este recurso.

FileRef

Obtiene la referencia de archivo para este recurso.

Name

Obtiene o establece el nombre de este recurso.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetNodePosition()

Recupera la posición del recurso en el archivo de recursos.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetValue(AssemblyName[])

Recupera el objeto almacenado por este nodo buscando los ensamblados especificados.

GetValue(ITypeResolutionService)

Recupera el objeto almacenado por este nodo mediante el servicio de resolución de tipos especificado.

GetValueTypeName(AssemblyName[])

Recupera el nombre de tipo del valor examinando los ensamblados especificados.

GetValueTypeName(ITypeResolutionService)

Recupera el nombre de tipo del valor mediante el servicio de resolución de tipos especificado.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Rellena un objeto SerializationInfo con los datos necesarios para serializar el objeto de destino.

Se aplica a

Consulte también