다음을 통해 공유


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 또는 serializedDatanull입니다.

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 는 19개의 공통 데이터 형식 중 하나를 저장하는 데 특수한 이진 형식이 사용됨을 나타내기 위해 Resgen.exe 사용하는 프라이빗 열거형입니다. 여기에는 .NET Framework 기본 데이터 형식(Boolean, , Byte, CharDecimal, DoubleInt32SingleUInt16SByteUInt64UInt32Int64Int16) 뿐만 String아니라 , DateTime및 가 포함되었습니다.TimeSpan 또한 ResourceTypeCode 열거형에는 다음 표에 표시된 값이 포함됩니다.

    ResourceTypeCode Description
    ResourceTypeCode.ByteArray 데이터는 바이트 배열입니다.
    ResourceTypeCode.Null 데이터는 null 참조입니다.
    ResourceTypeCode.Stream 데이터는 스트림에 저장됩니다.
  • 이진 데이터가 인수에 할당된 serializedData 형식의 정규화된 이름을 포함하는 문자열입니다(예: System.String). 또한 .NET Framework 클래스 라이브러리의 일부가 아닌 형식의 경우 문자열에는 형식이 포함된 어셈블리의 이름, 버전, 문화권 및 공개 키가 포함됩니다. 예를 들어 다음 문자열은 serialize된 데이터가 네임스페이스에 있는 형식 ExtensionsPerson instance 나타내며, 퍼블릭 키가 없고 지정된 문화권이 없는 Utility라는 어셈블리의 버전 1.0에 있습니다.

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

메서드를 사용하여 작성된 AddResourceData 리소스 데이터를 읽는 병렬 메서드는 입니다 ResourceReader.GetResourceData.

적용 대상

추가 정보