Sdílet prostřednictvím


ResXDataNode Třída

Definice

Představuje prvek v souboru prostředku 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
Dědičnost
ResXDataNode
Atributy
Implementuje

Příklady

Následující příklad používá metodu ResXResourceReader.GetEnumerator k získání objektu IDictionaryEnumerator , který se používá k vytvoření výčtu ResXDataNode objektů v souboru .resx. Příklad obsahuje rutinu CreateResourceFile , která vytvoří potřebný soubor prostředků XML.

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

Vzhledem k tomu, že vlastnost UseResXDataNodes je true, hodnota IDictionaryEnumerator.Value vlastnosti je ResXDataNode objekt místo hodnoty prostředku. Tím zpřístupníte komentář k položce prostředku z ResXDataNode.Comment dané vlastnosti.

Poznámky

Důležité

Volání metod z této třídy s nedůvěryhodnými daty představuje bezpečnostní riziko. Volejte metody z této třídy pouze s důvěryhodnými daty. Další informace naleznete v tématu Ověření všech vstupů.

Třída ResXDataNode podporuje reprezentaci bohatých datových typů v rámci souboru prostředků. Podporuje ukládání libovolného objektu v souboru prostředků, pokud objekt podporuje serializaci a editory typů.

Objekt můžete vytvořit ResXDataNode voláním jednoho z jeho přetížených konstruktorů třídy. Položku nebo prvek prostředku pak můžete přidat do souboru prostředku voláním ResXResourceWriter.AddResource metody.

Chcete-li načíst existující ResXDataNode objekt, musíte vytvořit výčet ResXDataNode objektů v souboru prostředků XML vytvořením instance ResXResourceReader objektu, nastavením ResXResourceReader.UseResXDataNodes vlastnosti na truea voláním ResXResourceReader.GetEnumerator metody získat enumerátor. Příklad obsahuje obrázek.

Konstruktory

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

Inicializuje novou instanci ResXDataNode třídy.

ResXDataNode(String, Object)

Inicializuje novou instanci ResXDataNode třídy.

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

Inicializuje novou instanci ResXDataNode třídy s odkazem na soubor prostředků.

ResXDataNode(String, ResXFileRef)

Inicializuje novou instanci ResXDataNode třídy s odkazem na soubor prostředků.

Vlastnosti

Name Description
Comment

Získá nebo nastaví libovolný komentář týkající se tohoto prostředku.

FileRef

Získá odkaz na soubor pro tento prostředek.

Name

Získá nebo nastaví název tohoto prostředku.

Metody

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetNodePosition()

Načte pozici prostředku v souboru prostředků.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
GetValue(AssemblyName[])

Načte objekt uložený tímto uzlem vyhledáváním zadaných sestavení.

GetValue(ITypeResolutionService)

Načte objekt uložený tímto uzlem pomocí zadané služby překladu typů.

GetValueTypeName(AssemblyName[])

Načte název typu pro hodnotu prozkoumáním zadaných sestavení.

GetValueTypeName(ITypeResolutionService)

Načte název typu pro hodnotu pomocí zadané služby překladu typů.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

Name Description
ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Naplní SerializationInfo objekt daty potřebnými k serializaci cílového objektu.

Platí pro

Viz také