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, która identyfikuje 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, typeNamelub serializedData to null.

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

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

Przykłady

W poniższym przykładzie AddResourceData użyto 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:

  • Reprezentacja ciągu ResourceTypeCode elementu członkowskiego wyliczenia, który wskazuje typ danych zasobu. ResourceTypeCode to prywatne wyliczenie, które jest używane przez Resgen.exe , aby wskazać, że specjalny format binarny jest używany do przechowywania jednego z 19 typowych typów danych. Należą do nich typy danych pierwotnych .NET Framework (Boolean, Byte, DecimalDoubleInt32CharInt16UInt32UInt16UInt64SingleSByteInt64i .StringDateTimeTimeSpan Ponadto wyliczenie ResourceTypeCode zawiera wartości przedstawione 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ą przypisywane 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, który zawiera typ. Na przykład następujący ciąg wskazuje, że dane serializowane reprezentują wystąpienie Person typu w Extensions przestrzeni nazw, która znajduje się w wersji 1.0 zestawu o nazwie Narzędzie, które nie ma klucza publicznego i nie określono kultury wyznaczonej.

    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ż