ResXDataNode Classe

Definizione

Rappresenta un elemento di un file di risorse 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
Ereditarietà
ResXDataNode
Attributi
Implementazioni

Esempio

Nell'esempio seguente viene utilizzato il ResXResourceReader.GetEnumerator metodo per ottenere un IDictionaryEnumerator oggetto utilizzato per enumerare gli ResXDataNode oggetti in un file resx. Nell'esempio è inclusa una CreateResourceFile routine che crea il file di risorse XML necessario.

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

Poiché la UseResXDataNodes proprietà è true, il valore della IDictionaryEnumerator.Value proprietà è un ResXDataNode oggetto anziché il valore della risorsa. In questo modo, il commento di un elemento della risorsa è disponibile dalla ResXDataNode.Comment proprietà .

Commenti

Importante

La chiamata a metodi da questa classe con dati non attendibili costituisce un rischio per la sicurezza. Chiamare i metodi da questa classe solo con dati attendibili. Per altre informazioni, vedere Convalidare tutti gli input.

La ResXDataNode classe supporta la rappresentazione di tipi di dati avanzati all'interno di un file di risorse. Può supportare l'archiviazione di qualsiasi oggetto in un file di risorse, purché l'oggetto supporti la serializzazione e gli editor di tipi.

È possibile creare un ResXDataNode oggetto chiamando uno dei costruttori di classe di overload. È quindi possibile aggiungere l'elemento o l'elemento della risorsa a un file di risorse chiamando il ResXResourceWriter.AddResource metodo .

Per recuperare un oggetto esistente ResXDataNode , è necessario enumerare gli ResXDataNode oggetti in un file di risorse XML creando un'istanza di un ResXResourceReader oggetto, impostando la ResXResourceReader.UseResXDataNodes proprietà su truee chiamando il ResXResourceReader.GetEnumerator metodo per ottenere un enumeratore. Nell'esempio viene illustrata una situazione di questo tipo.

Costruttori

ResXDataNode(String, Object)

Inizializza una nuova istanza della classe ResXDataNode.

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

Inizializza una nuova istanza della classe ResXDataNode.

ResXDataNode(String, ResXFileRef)

Inizializza una nuova istanza della classe ResXDataNode con un riferimento a un file di risorse.

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

Inizializza una nuova istanza della classe ResXDataNode con un riferimento a un file di risorse.

Proprietà

Comment

Ottiene o imposta un commento arbitrario relativo alla risorsa.

FileRef

Ottiene il riferimento al file per la risorsa.

Name

Ottiene o imposta il nome della risorsa.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetNodePosition()

Recupera la posizione della risorsa nel file di risorse.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetValue(AssemblyName[])

Recupera l'oggetto archiviato da questo nodo cercando gli assembly specificati.

GetValue(ITypeResolutionService)

Recupera l'oggetto archiviato da questo nodo utilizzando il servizio di risoluzione dei tipi specificato.

GetValueTypeName(AssemblyName[])

Recupera il nome di tipo per il valore esaminando gli assembly specificati.

GetValueTypeName(ITypeResolutionService)

Recupera il nome di tipo per il valore utilizzando il servizio di risoluzione dei tipi specificato.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Popola un oggetto SerializationInfo con i dati necessari per la serializzazione dell'oggetto di destinazione.

Si applica a

Vedi anche