Język

ResourceWriter.AddResourceData(String, String, Byte[]) Metoda

Definicja

Dodaje jednostkę danych jako zasób do listy zasobów do zapisania.

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())

Parametry

name
String

Nazwa identyfikująca zasób zawierający dodane dane.

typeName
String

Nazwa typu dodanych danych.

serializedData
Byte[]

Tablica bajtów zawierająca binarną reprezentację dodanych danych.

Wyjątki

name, lub typeNameserializedData ma wartość null.

name (lub nazwa, która różni się tylko literami) została już dodana do tego ResourceWriter obiektu.

Bieżący ResourceWriter obiekt nie jest inicjowany. Prawdopodobną przyczyną jest ResourceWriter zamknięcie obiektu.

Przykłady

W poniższym przykładzie użyto AddResourceData metody do zapisania dwóch wartości całkowitych w pliku resources, a następnie użyto ResourceReader obiektu do ich pobrania.

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

Uwagi

AddResourceData Użyj metody , aby dodać zasób w postaci binarnej (czyli jako tablicę bajtów) do listy zasobów do zapisania. Musisz określić nazwę zasobu, nazwę typu danych zawartych w zasobie oraz binarną reprezentację samych danych. Po dodaniu każdego wymaganego zasobu użyj Generate metody , aby zapisać listę zasobów do pliku zasobów lub strumienia określonego w konstruktorze ResourceWriter .

typeName to ciąg reprezentujący typ danych zasobu. Może to być dowolna z następujących wartości:

  • Ciąg reprezentujący element ResourceTypeCode członkowski wyliczenia wskazujący typ danych zasobu. ResourceTypeCode to prywatne wyliczenie, które jest używane przez Resgen.exe , aby wskazać, że do przechowywania jednego z 19 typowych typów danych jest używany specjalny format binarny. Obejmują one podstawowe typy danych .NET Framework (Boolean, Byte, Char, Decimal, Double, Int16, Int32, Int64, Single, SByte, UInt16, UInt32, UInt64), a także String, DateTime i TimeSpan. Ponadto ResourceTypeCode wyliczenie zawiera wartości pokazane w poniższej tabeli.

    ResourceTypeCode Wartość Opis
    ResourceTypeCode.ByteArray Dane są tablicą bajtów.
    ResourceTypeCode.Null Dane są odwołaniem o wartości null.
    ResourceTypeCode.Stream Dane są przechowywane w strumieniu.
  • Ciąg zawierający w pełni kwalifikowaną nazwę typu, którego dane binarne są przypisane do argumentu serializedData (na przykład System.String). Ponadto w przypadku typów, które nie są częścią biblioteki klas .NET Framework, ciąg zawiera nazwę, wersję, kulturę i klucz publiczny zestawu zawierającego typ. Na przykład poniższy ciąg wskazuje, że serializowane dane reprezentują wystąpienie Person typu w Extensions przestrzeni nazw, która znajduje się w wersji 1.0 zestawu o nazwie Utility, który nie ma klucza publicznego i nie ma wyznaczonej kultury.

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

Metoda równoległa do odczytywania danych zasobów zapisanych za pomocą AddResourceData metody to ResourceReader.GetResourceData.

Dotyczy

Zobacz też