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 die UseResXDataNodes -Eigenschaft ist true, ist der Wert der IDictionaryEnumerator.Value -Eigenschaft ein ResXDataNode -Objekt und nicht der Ressourcenwert. Dadurch wird der Kommentar eines Ressourcenelements über die ResXDataNode.Comment -Eigenschaft verfügbar.

Hinweise

Wichtig

Das Aufrufen von Methoden aus dieser Klasse mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. 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 umfangreicher Datentypen innerhalb einer Ressourcendatei. Es kann die Speicherung eines beliebigen Objekts in einer Ressourcendatei unterstützen, sofern 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 einer Ressourcendatei hinzufügen, indem Sie die ResXResourceWriter.AddResource -Methode aufrufen.

Um ein vorhandenes ResXDataNode Objekt abzurufen, müssen Sie die ResXDataNode Objekte in einer XML-Ressourcendatei auflisten, indem Sie ein ResXResourceReader -Objekt instanziieren, die ResXResourceReader.UseResXDataNodes -Eigenschaft auf truefestlegen und die ResXResourceReader.GetEnumerator -Methode aufrufen, um einen Enumerator abzurufen. Dies wird im Beispiel veranschaulicht.

Konstruktoren

ResXDataNode(String, Object)

Initialisiert eine neue Instanz der ResXDataNode-Klasse.

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

Initialisiert eine neue Instanz der ResXDataNode-Klasse.

ResXDataNode(String, ResXFileRef)

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

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

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

Eigenschaften

Comment

Ruft einen beliebigen Kommentar bezüglich dieser Ressource ab oder legt diesen fest.

FileRef

Ruft den Dateiverweis für diese Ressource ab.

Name

Ruft den Namen dieser Ressource ab oder legt diesen fest.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetNodePosition()

Ruft die Position der Ressource in der Ressourcendatei ab.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValue(AssemblyName[])

Ruft das Objekt ab, das durch diesen Knoten gespeichert wird, indem die angegebenen Assemblys durchsucht werden.

GetValue(ITypeResolutionService)

Ruft das Objekt ab, das durch diesen Knoten gespeichert wird, indem der angegebene Typauflösungsdienst verwendet wird.

GetValueTypeName(AssemblyName[])

Ruft den Typnamen für den Wert durch Untersuchen der angegebenen Assembly ab.

GetValueTypeName(ITypeResolutionService)

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

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Füllt ein SerializationInfo-Objekt mit den Daten auf, die zur Serialisierung des Zielobjekts benötigt werden.

Gilt für:

Weitere Informationen