Поделиться через


ResXDataNode Класс

Определение

Представляет элемент в 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
Наследование
ResXDataNode
Атрибуты
Реализации

Примеры

В следующем примере метод используется ResXResourceReader.GetEnumerator для получения объекта, используемого IDictionaryEnumerator для перечисления ResXDataNode объектов в RESX-файле. В примере содержится подпрограмма, которая создает необходимый CreateResourceFile 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

UseResXDataNodes Так как свойство равноtrue, значение IDictionaryEnumerator.Value свойства является ResXDataNode объектом, а не значением ресурса. Это делает комментарий элемента ресурса доступным из ResXDataNode.Comment свойства.

Комментарии

Это важно

Вызов методов из этого класса с ненадежными данными является угрозой безопасности. Вызовите методы из этого класса только с доверенными данными. Дополнительные сведения см. в разделе Проверка всех входных данных.

Класс ResXDataNode поддерживает представление типов богатых данных в файле ресурсов. Он может поддерживать хранение любого объекта в файле ресурсов, если объект поддерживает сериализацию и редакторы типов.

Можно создать ResXDataNode объект, вызвав один из перегруженных конструкторов классов. Затем можно добавить элемент ресурса или элемент в файл ресурсов, вызвав ResXResourceWriter.AddResource метод.

Чтобы получить существующий ResXDataNode объект, необходимо перечислить ResXDataNode объекты в XML-файле ресурсов путем создания ResXResourceReader экземпляра объекта, задания ResXResourceReader.UseResXDataNodes свойства trueи вызова ResXResourceReader.GetEnumerator метода для получения перечислителя. Пример содержит иллюстрацию.

Конструкторы

Имя Описание
ResXDataNode(String, Object, Func<Type,String>)

Инициализирует новый экземпляр класса ResXDataNode.

ResXDataNode(String, Object)

Инициализирует новый экземпляр класса ResXDataNode.

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

Инициализирует новый экземпляр ResXDataNode класса со ссылкой на файл ресурсов.

ResXDataNode(String, ResXFileRef)

Инициализирует новый экземпляр ResXDataNode класса со ссылкой на файл ресурсов.

Свойства

Имя Описание
Comment

Возвращает или задает произвольный комментарий относительно этого ресурса.

FileRef

Возвращает ссылку на файл для этого ресурса.

Name

Возвращает или задает имя этого ресурса.

Методы

Имя Описание
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetNodePosition()

Извлекает положение ресурса в файле ресурса.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
GetValue(AssemblyName[])

Извлекает объект, хранящийся этим узлом, путем поиска указанных сборок.

GetValue(ITypeResolutionService)

Извлекает объект, хранящийся этим узлом, с помощью указанной службы разрешения типов.

GetValueTypeName(AssemblyName[])

Извлекает имя типа для значения, проверяя указанные сборки.

GetValueTypeName(ITypeResolutionService)

Извлекает имя типа для значения с помощью указанной службы разрешения типов.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Заполняет объект данными SerializationInfo , необходимыми для сериализации целевого объекта.

Применяется к

См. также раздел