Sdílet prostřednictvím


ResXDataNode Třída

Definice

Představuje prvek v souboru prostředků 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ý slouží k 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 UseResXDataNodes vlastnost je true, hodnota IDictionaryEnumerator.Value vlastnosti je objekt, ResXDataNode nikoli hodnota prostředku. Tím se z vlastnosti zpřístupní ResXDataNode.Comment komentář k položce prostředku.

Poznámky

Důležité

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

Třída ResXDataNode podporuje reprezentaci formátovaných datových typů v souboru prostředků. Může podporovat úložiště 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 konstruktorů přetížené třídy. Potom můžete přidat položku nebo prvek prostředku do souboru prostředků voláním ResXResourceWriter.AddResource metody .

Chcete-li načíst existující ResXDataNode objekt, je nutné vytvořit výčet objektů v souboru prostředků XML vytvořením instance ResXResourceReader objektuResXDataNode, nastavením ResXResourceReader.UseResXDataNodes vlastnosti na truea voláním ResXResourceReader.GetEnumerator metody získat enumerátor. Příklad uvádí ukázku.

Konstruktory

ResXDataNode(String, Object)

Inicializuje novou instanci ResXDataNode třídy .

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

Inicializuje novou instanci ResXDataNode třídy .

ResXDataNode(String, ResXFileRef)

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

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

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

Vlastnosti

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

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

Slouží jako výchozí hashovací funkce.

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

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

GetType()

Type Získá z aktuální instance.

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

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

GetValue(ITypeResolutionService)

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

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 typu.

MemberwiseClone()

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

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

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

(Zděděno od Object)

Explicitní implementace rozhraní

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

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

Platí pro

Viz také