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


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-файле ресурсов, создав экземпляр объекта , задав ResXResourceReaderResXResourceReader.UseResXDataNodes для свойства trueзначение и вызвав ResXResourceReader.GetEnumerator метод для получения перечислителя. Иллюстрация приведена в примере.

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

ResXDataNode(String, Object)

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

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

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

ResXDataNode(String, ResXFileRef)

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

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

Инициализирует новый экземпляр класса 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 данными, необходимыми для сериализации целевого объекта.

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

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