ResXDataNode Klas

Definitie

Vertegenwoordigt een element in een XML-resourcebestand (.resx).

public ref class ResXDataNode sealed : System::Runtime::Serialization::ISerializable
[System.Serializable]
public sealed class ResXDataNode : System.Runtime.Serialization.ISerializable
[<System.Serializable>]
type ResXDataNode = class
    interface ISerializable
Public NotInheritable Class ResXDataNode
Implements ISerializable
Overname
ResXDataNode
Kenmerken
Implementeringen

Voorbeelden

In het volgende voorbeeld wordt de ResXResourceReader.GetEnumerator methode gebruikt om een IDictionaryEnumerator object te verkrijgen dat wordt gebruikt om de ResXDataNode objecten in een RESX-bestand op te sommen. Het voorbeeld bevat een CreateResourceFile routine waarmee het benodigde XML-resourcebestand wordt gemaakt.

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

Omdat de UseResXDataNodes eigenschap is, is truede waarde van de IDictionaryEnumerator.Value eigenschap een ResXDataNode object in plaats van de resourcewaarde. Hierdoor wordt de opmerking van een resource-item beschikbaar gesteld vanuit de ResXDataNode.Comment eigenschap.

Opmerkingen

Important

Het aanroepen van methoden uit deze klasse met niet-vertrouwde gegevens is een beveiligingsrisico. Roep de methoden van deze klasse alleen aan met vertrouwde gegevens. Zie Alle invoergegevens validerenvoor meer informatie.

De ResXDataNode klasse ondersteunt de weergave van uitgebreide gegevenstypen in een resourcebestand. Het kan de opslag van elk object in een resourcebestand ondersteunen, zolang het object serialisatie en type-editors ondersteunt.

U kunt een ResXDataNode object maken door een van de overbelaste klasseconstructors aan te roepen. Vervolgens kunt u het resource-item of -element toevoegen aan een resourcebestand door de ResXResourceWriter.AddResource methode aan te roepen.

Als u een bestaand ResXDataNode object wilt ophalen, moet u de ResXDataNode objecten in een XML-resourcebestand opsommen door een ResXResourceReader object te instantiƫren, de ResXResourceReader.UseResXDataNodes eigenschap in te truestellen op en de ResXResourceReader.GetEnumerator methode aan te roepen om een enumerator op te halen. In het voorbeeld ziet u een afbeelding.

Constructors

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

Initialiseert een nieuw exemplaar van de ResXDataNode klasse.

ResXDataNode(String, Object)

Initialiseert een nieuw exemplaar van de ResXDataNode klasse.

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

Initialiseert een nieuw exemplaar van de ResXDataNode klasse met een verwijzing naar een resourcebestand.

ResXDataNode(String, ResXFileRef)

Initialiseert een nieuw exemplaar van de ResXDataNode klasse met een verwijzing naar een resourcebestand.

Eigenschappen

Name Description
Comment

Hiermee haalt u een willekeurige opmerking op met betrekking tot deze resource of stelt u deze in.

FileRef

Hiermee haalt u de bestandsreferentie voor deze resource op.

Name

Hiermee haalt u de naam van deze resource op of stelt u deze in.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetNodePosition()

Haalt de positie van de resource in het resourcebestand op.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetValue(AssemblyName[])

Hiermee haalt u het object op dat door dit knooppunt is opgeslagen door de opgegeven assembly's te doorzoeken.

GetValue(ITypeResolutionService)

Hiermee haalt u het object op dat door dit knooppunt is opgeslagen met behulp van de opgegeven typeomzettingsservice.

GetValueTypeName(AssemblyName[])

Haalt de typenaam voor de waarde op door de opgegeven assembly's te controleren.

GetValueTypeName(ITypeResolutionService)

Haalt de typenaam voor de waarde op met behulp van de opgegeven typeomzettingsservice.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

Name Description
ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Hiermee wordt een SerializationInfo object gevuld met de gegevens die nodig zijn om het doelobject te serialiseren.

Van toepassing op

Zie ook