ResXDataNode Classe

Definizione

Rappresenta un elemento di un file di risorse XML (resx)Represents an element in an XML resource (.resx) file.

public ref class ResXDataNode sealed : System::Runtime::Serialization::ISerializable
[System.Serializable]
public sealed class ResXDataNode : System.Runtime.Serialization.ISerializable
type ResXDataNode = class
    interface ISerializable
Public NotInheritable Class ResXDataNode
Implements ISerializable
Ereditarietà
ResXDataNode
Attributi
Implementazioni

Esempi

Nell'esempio seguente viene utilizzato il metodo ResXResourceReader.GetEnumerator per ottenere un oggetto IDictionaryEnumerator utilizzato per enumerare gli oggetti ResXDataNode in un file resx.The following example uses the ResXResourceReader.GetEnumerator method to obtain an IDictionaryEnumerator object that is used to enumerate the ResXDataNode objects in a .resx file. Nell'esempio è inclusa una routine CreateResourceFile che consente di creare il file di risorse XML necessario.The example includes a CreateResourceFile routine that creates the necessary XML resource file.

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 proprietà UseResXDataNodes è true, il valore della proprietà IDictionaryEnumerator.Value è un oggetto ResXDataNode anziché il valore della risorsa.Because the UseResXDataNodes property is true, the value of the IDictionaryEnumerator.Value property is a ResXDataNode object rather than the resource value. In questo modo il commento di un elemento di risorsa viene reso disponibile dalla proprietà ResXDataNode.Comment.This makes a resource item's comment available from the ResXDataNode.Comment property.

Commenti

La classe ResXDataNode supporta la rappresentazione di tipi di dati avanzati all'interno di un file di risorse.The ResXDataNode class supports the representation of rich data types within a resource file. Può supportare l'archiviazione di qualsiasi oggetto in un file di risorse, purché l'oggetto supporti gli editor di serializzazione e di tipo.It can support the storage of any object in a resource file, so long as the object supports serialization and type editors.

È possibile creare un oggetto ResXDataNode chiamando uno dei relativi costruttori della classe di overload.You can create a ResXDataNode object by calling one of its overloaded class constructors. È quindi possibile aggiungere l'elemento o l'elemento della risorsa a un file di risorse chiamando il metodo ResXResourceWriter.AddResource.You can then add the resource item or element to a resource file by calling the ResXResourceWriter.AddResource method.

Per recuperare un oggetto ResXDataNode esistente, è necessario enumerare gli oggetti ResXDataNode in un file di risorse XML creando un'istanza di un oggetto ResXResourceReader, impostando la proprietà ResXResourceReader.UseResXDataNodes su truee chiamando il metodo ResXResourceReader.GetEnumerator per ottenere un enumeratore.To retrieve an existing ResXDataNode object, you must enumerate the ResXDataNode objects in an XML resource file by instantiating a ResXResourceReader object, setting the ResXResourceReader.UseResXDataNodes property to true, and calling the ResXResourceReader.GetEnumerator method to get an enumerator. Nell'esempio viene illustrata una situazione di questo tipo.The example provides an illustration.

Costruttori

ResXDataNode(String, Object)

Inizializza una nuova istanza della classe ResXDataNode.Initializes a new instance of the ResXDataNode class.

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

Inizializza una nuova istanza della classe ResXDataNode.Initializes a new instance of the ResXDataNode class.

ResXDataNode(String, ResXFileRef)

Inizializza una nuova istanza della classe ResXDataNode con un riferimento a un file di risorse.Initializes a new instance of the ResXDataNode class with a reference to a resource file.

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

Inizializza una nuova istanza della classe ResXDataNode con un riferimento a un file di risorse.Initializes a new instance of the ResXDataNode class with a reference to a resource file.

Proprietà

Comment

Ottiene o imposta un commento arbitrario relativo alla risorsa.Gets or sets an arbitrary comment regarding this resource.

FileRef

Ottiene il riferimento al file per la risorsa.Gets the file reference for this resource.

Name

Ottiene o imposta il nome della risorsa.Gets or sets the name of this resource.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetNodePosition()

Recupera la posizione della risorsa nel file di risorse.Retrieves the position of the resource in the resource file.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
GetValue(AssemblyName[])

Recupera l'oggetto archiviato da questo nodo cercando gli assembly specificati.Retrieves the object that is stored by this node by searching the specified assemblies.

GetValue(ITypeResolutionService)

Recupera l'oggetto archiviato da questo nodo utilizzando il servizio di risoluzione dei tipi specificato.Retrieves the object that is stored by this node by using the specified type resolution service.

GetValueTypeName(AssemblyName[])

Recupera il nome di tipo per il valore esaminando gli assembly specificati.Retrieves the type name for the value by examining the specified assemblies.

GetValueTypeName(ITypeResolutionService)

Recupera il nome di tipo per il valore utilizzando il servizio di risoluzione dei tipi specificato.Retrieves the type name for the value by using the specified type resolution service.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Compila un oggetto SerializationInfo con i dati necessari per serializzare l'oggetto di destinazione.Populates a SerializationInfo object with the data needed to serialize the target object.

Sicurezza

LinkDemand
per l'attendibilità totale per il chiamante immediato.for full trust for the immediate caller. Questo tipo non può essere usato da codice parzialmente attendibile.This type cannot be used by partially trusted code.

Si applica a

Vedi anche