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


ResourceWriter.AddResourceData(String, String, Byte[]) Метод

Определение

Добавляет единицу данных как ресурс в список ресурсов для записи.

public:
 void AddResourceData(System::String ^ name, System::String ^ typeName, cli::array <System::Byte> ^ serializedData);
public void AddResourceData (string name, string typeName, byte[] serializedData);
member this.AddResourceData : string * string * byte[] -> unit
Public Sub AddResourceData (name As String, typeName As String, serializedData As Byte())

Параметры

name
String

Имя, которое идентифицирует ресурс, содержащий добавленные данные.

typeName
String

Имя типа добавленных данных.

serializedData
Byte[]

Массив байтов, содержащий двоичное представление добавленных данных.

Исключения

Значение параметра name, typeName или serializedData равно null.

Параметр name (или имя, которое отличается лишь регистром) уже добавлен к этому объекту ResourceWriter.

Текущий объект ResourceWriter не инициализирован. Вероятно, причина в том, что объект ResourceWriter закрыт.

Примеры

В следующем примере метод используется AddResourceData для записи двух целочисленных значений в RESOURCES-файл, а затем используется объект для ResourceReader их извлечения.

using System;
using System.Collections;
using System.Resources;

public class Example
{
   public static void Main()
   {
      ResourceWriter rw = new ResourceWriter(@".\TypeResources.resources");
      int n1 = 1032;
      rw.AddResourceData("Integer1", "ResourceTypeCode.Int32", BitConverter.GetBytes(n1));
      int n2 = 2064;       
      rw.AddResourceData("Integer2", "ResourceTypeCode.Int32", BitConverter.GetBytes(n2));
      rw.Generate();
      rw.Close();

      ResourceReader rr = new ResourceReader(@".\TypeResources.resources");
      IDictionaryEnumerator e = rr.GetEnumerator();
      while (e.MoveNext())
         Console.WriteLine("{0}: {1}", e.Key, e.Value);
   }
}
// The example displays the following output:
//       Integer2: 2064
//       Integer1: 1032
Imports System.Collections
Imports System.Resources

Module Example
   Public Sub Main()
      Dim rw As New ResourceWriter(".\TypeResources.resources")
      Dim n1 As Integer = 1032
      rw.AddResourceData("Integer1", "ResourceTypeCode.Int32", BitConverter.GetBytes(n1))
      Dim n2 As Integer = 2064       
      rw.AddResourceData("Integer2", "ResourceTypeCode.Int32", BitConverter.GetBytes(n2))
      rw.Generate()
      rw.Close()

      Dim rr As New ResourceReader(".\TypeResources.resources")
      Dim e As IDictionaryEnumerator = rr.GetEnumerator()
      Do While e.MoveNext()
         Console.WriteLine("{0}: {1}", e.Key, e.Value)
      Loop
    End Sub
End Module
' The example displays the following output:
'       Integer2: 2064
'       Integer1: 1032

Комментарии

Используйте метод , AddResourceData чтобы добавить ресурс в двоичной форме (то есть в виде массива байтов) в список записываемых ресурсов. Необходимо указать имя ресурса, имя типа данных, содержащихся в ресурсе, и двоичное представление самих данных. Добавив каждый необходимый ресурс, используйте Generate метод , чтобы записать список ресурсов в файл ресурсов или поток, указанный в конструкторе ResourceWriter .

typeName — это строка, представляющая тип данных ресурса. В качестве такой точки может выступать любой из следующих вариантов:

  • Строковое представление ResourceTypeCode элемента перечисления, указывающее тип данных ресурса. ResourceTypeCode — это частное перечисление, которое используется Resgen.exe , чтобы указать, что для хранения одного из 19 распространенных типов данных используется специальный двоичный формат. К ним относятся платформа .NET Framework примитивные типы данных (Boolean, , ByteChar, DecimalDouble, Int16, Int32, Int64, Single, SByte, UInt16, UInt32, ), UInt64а также String, DateTimeи TimeSpan. Кроме того, перечисление ResourceTypeCode включает значения, показанные в следующей таблице.

    Значение ResourceTypeCode Описание
    ResourceTypeCode.ByteArray Данные являются массивом байтов.
    ResourceTypeCode.Null Данные являются пустой ссылкой.
    ResourceTypeCode.Stream Данные хранятся в потоке.
  • Строка, содержащая полное имя типа, двоичные данные которого назначены аргументу serializedData (например, System.String). Кроме того, для типов, которые не являются частью библиотеки классов платформа .NET Framework, строка включает имя, версию, язык и региональные параметры и открытый ключ сборки, содержащей тип. Например, следующая строка указывает, что сериализованные данные представляют экземпляр типа в Extensions пространстве имен, который находится в версии 1.0 сборки с именем Utility, у которой нет открытого Person ключа и языка и региональных параметров.

    Extensions.Person, Utility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Параллельный метод для чтения данных ресурса, записанных AddResourceData с помощью метода , — .ResourceReader.GetResourceData

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

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