Freigeben über


ResXDataNode Klasse

Definition

Stellt ein Element in einer XML-Ressourcendatei (RESX) dar.

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
Vererbung
ResXDataNode
Attribute
Implementiert

Beispiele

Im folgenden Beispiel wird die ResXResourceReader.GetEnumerator Methode verwendet, um ein IDictionaryEnumerator Objekt abzurufen, das zum Aufzählen der ResXDataNode Objekte in einer RESX-Datei verwendet wird. Das Beispiel enthält eine CreateResourceFile Routine, die die erforderliche XML-Ressourcendatei erstellt.

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

Da es sich bei der UseResXDataNodes Eigenschaft trueum einen Wert handelt, handelt es sich bei der IDictionaryEnumerator.Value Eigenschaft um ein ResXDataNode Objekt und nicht um den Ressourcenwert. Dadurch wird der Kommentar eines Ressourcenelements aus der ResXDataNode.Comment Eigenschaft verfügbar.

Hinweise

Von Bedeutung

Das Aufrufen von Methoden aus dieser Klasse mit nicht vertrauenswürdigen Daten ist ein Sicherheitsrisiko. Rufen Sie die Methoden aus dieser Klasse nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.

Die ResXDataNode Klasse unterstützt die Darstellung von umfangreichen Datentypen in einer Ressourcendatei. Es kann den Speicher eines beliebigen Objekts in einer Ressourcendatei unterstützen, solange das Objekt serialisierung und Typ-Editoren unterstützt.

Sie können ein ResXDataNode Objekt erstellen, indem Sie einen seiner überladenen Klassenkonstruktoren aufrufen. Anschließend können Sie das Ressourcenelement oder -element zu einer Ressourcendatei hinzufügen, indem Sie die ResXResourceWriter.AddResource Methode aufrufen.

Zum Abrufen eines vorhandenen ResXDataNode Objekts müssen Sie die ResXDataNode Objekte in einer XML-Ressourcendatei aufzählen, indem Sie ein ResXResourceReader Objekt instanziieren, die ResXResourceReader.UseResXDataNodes Eigenschaft truefestlegen und die ResXResourceReader.GetEnumerator Methode aufrufen, um einen Enumerator abzurufen. Das Beispiel stellt eine Abbildung bereit.

Konstruktoren

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

Initialisiert eine neue Instanz der ResXDataNode-Klasse.

ResXDataNode(String, Object)

Initialisiert eine neue Instanz der ResXDataNode-Klasse.

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

Initialisiert eine neue Instanz der ResXDataNode Klasse mit einem Verweis auf eine Ressourcendatei.

ResXDataNode(String, ResXFileRef)

Initialisiert eine neue Instanz der ResXDataNode Klasse mit einem Verweis auf eine Ressourcendatei.

Eigenschaften

Name Beschreibung
Comment

Ruft einen beliebigen Kommentar zu dieser Ressource ab oder legt diesen fest.

FileRef

Ruft den Dateiverweis für diese Ressource ab.

Name

Dient zum Abrufen oder Festlegen des Namens dieser Ressource.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetNodePosition()

Ruft die Position der Ressource in der Ressourcendatei ab.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValue(AssemblyName[])

Ruft das Objekt ab, das von diesem Knoten gespeichert wird, indem die angegebenen Assemblys durchsucht werden.

GetValue(ITypeResolutionService)

Ruft das Objekt ab, das von diesem Knoten mithilfe des angegebenen Typauflösungsdiensts gespeichert wird.

GetValueTypeName(AssemblyName[])

Ruft den Typnamen für den Wert ab, indem die angegebenen Assemblys untersucht werden.

GetValueTypeName(ITypeResolutionService)

Ruft den Typnamen für den Wert mithilfe des angegebenen Typauflösungsdiensts ab.

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Füllt ein SerializationInfo Objekt mit den Daten auf, die zum Serialisieren des Zielobjekts erforderlich sind.

Gilt für:

Weitere Informationen