Partage via


ResXDataNode Classe

Définition

Représente un élément dans un fichier de ressources 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
Héritage
ResXDataNode
Attributs
Implémente

Exemples

L’exemple suivant utilise la ResXResourceReader.GetEnumerator méthode pour obtenir un IDictionaryEnumerator objet utilisé pour énumérer les ResXDataNode objets dans un fichier .resx. L’exemple inclut une CreateResourceFile routine qui crée le fichier de ressources XML nécessaire.

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

Étant donné que la UseResXDataNodes propriété est true, la valeur de la IDictionaryEnumerator.Value propriété est un ResXDataNode objet plutôt que la valeur de ressource. Cela rend le commentaire d’un élément de ressource disponible à partir de la ResXDataNode.Comment propriété .

Remarques

Important

L’appel de méthodes de cette classe avec des données non approuvées est un risque de sécurité. Appelez les méthodes de cette classe avec des données approuvées uniquement. Pour plus d’informations, consultez Valider toutes les entrées.

La ResXDataNode classe prend en charge la représentation de types de données riches dans un fichier de ressources. Il peut prendre en charge le stockage de n’importe quel objet dans un fichier de ressources, à condition que l’objet prenne en charge la sérialisation et les éditeurs de type.

Vous pouvez créer un ResXDataNode objet en appelant l’un de ses constructeurs de classe surchargés. Vous pouvez ensuite ajouter l’élément ou l’élément de ressource à un fichier de ressources en appelant la ResXResourceWriter.AddResource méthode .

Pour récupérer un objet existantResXDataNode, vous devez énumérer les ResXDataNode objets dans un fichier de ressources XML en instanciant un ResXResourceReader objet, en affectant à truela propriété la ResXResourceReader.UseResXDataNodes valeur et en appelant la ResXResourceReader.GetEnumerator méthode pour obtenir un énumérateur. Cet exemple en fournit une illustration.

Constructeurs

ResXDataNode(String, Object)

Initialise une nouvelle instance de la classe ResXDataNode.

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

Initialise une nouvelle instance de la classe ResXDataNode.

ResXDataNode(String, ResXFileRef)

Initialise une nouvelle instance de la classe ResXDataNode avec une référence à un fichier de ressources.

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

Initialise une nouvelle instance de la classe ResXDataNode avec une référence à un fichier de ressources.

Propriétés

Comment

Obtient ou définit un commentaire arbitraire concernant cette ressource.

FileRef

Obtient la référence de fichier pour cette ressource.

Name

Obtient ou définit le nom de cette ressource.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetNodePosition()

Récupère la position de la ressource dans le fichier de ressources.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetValue(AssemblyName[])

Récupère l'objet stocké par ce nœud en recherchant les assemblys spécifiés.

GetValue(ITypeResolutionService)

Récupère l'objet stocké par ce nœud à l'aide du service de résolution de type spécifié.

GetValueTypeName(AssemblyName[])

Récupère le nom du type de la valeur en examinant les assemblys spécifiés.

GetValueTypeName(ITypeResolutionService)

Récupère le nom du type de la valeur à l'aide du type de service de résolution spécifié.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Remplit un objet SerializationInfo avec les données requises pour sérialiser l'objet cible.

S’applique à

Voir aussi