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[]

追加されたデータのバイナリ表現を含むバイト配列。

例外

nametypeName、または serializedDatanull

name (または大文字と小文字の違いによってのみ異なる名前) は、この ResourceWriter オブジェクトに既に追加されています。

現在の ResourceWriter オブジェクトが初期化されていません。 考えられる原因は、 ResourceWriter オブジェクトが閉じているということです。

次の例では、 AddResourceData メソッドを使用して 2 つの整数値を .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 は、19 個の共通データ型のいずれかを格納するために特別なバイナリ形式が使用されることを示すために、 Resgen.exe によって使用されるプライベート列挙です。 これには、.NET Framework プリミティブ データ型 (BooleanByteCharDecimalDoubleInt16Int32Int64SingleSByteUInt16UInt32UInt64)、StringDateTime、および TimeSpan。 さらに、 ResourceTypeCode 列挙には、次の表に示す値が含まれています。

    ResourceTypeCode Description
    ResourceTypeCode.ByteArray データはバイト配列です。
    ResourceTypeCode.Null データは null 参照です。
    ResourceTypeCode.Stream データはストリームに格納されます。
  • serializedData引数にバイナリ データが割り当てられている型の完全修飾名を含む文字列 (たとえば、System.String)。 さらに、.NET Framework クラス ライブラリに含まれていない型の場合、文字列には、その型を含むアセンブリの名前、バージョン、カルチャ、公開キーが含まれます。 たとえば、次の文字列は、シリアル化されたデータが、公開キーがなく、カルチャが指定されていない Utility という名前のアセンブリのバージョン 1.0 にある、Person名前空間のExtensions型のインスタンスを表していることを示しています。

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

AddResourceData メソッドで書き込まれたリソース データを読み取るための並列メソッドがResourceReader.GetResourceData

適用対象

こちらもご覧ください