사용자 지정 Foreach 열거자 만들기Creating a Custom Foreach Enumerator

사용자 지정 foreach 열거자를 만드는 단계는 Integration ServicesIntegration Services의 다른 사용자 지정 개체를 만드는 단계와 비슷합니다.The steps involved in creating a custom foreach enumerator are similar to the steps for creating any other custom object for Integration ServicesIntegration Services:

  • 기본 클래스에서 상속되는 새 클래스를 만듭니다.Create a new class that inherits from the base class. foreach 열거자의 경우 기본 클래스는 ForEachEnumerator입니다.For a foreach enumerator, the base class is ForEachEnumerator.

  • 개체 유형을 식별하는 특성을 클래스에 적용합니다.Apply the attribute that identifies the type of object to the class. foreach 열거자의 경우 이 특성은 DtsForEachEnumeratorAttribute입니다.For a foreach enumerator, the attribute is DtsForEachEnumeratorAttribute.

  • 기본 클래스의 메서드 및 속성 구현을 재정의합니다.Override the implementation of the base class's methods and properties. foreach 열거자의 경우 가장 중요한 항목은 GetEnumerator 메서드입니다.For a foreach enumerator, the most important is the GetEnumerator method.

  • 필요한 경우 사용자 지정 사용자 인터페이스를 개발합니다.Optionally, develop a custom user interface. foreach 열거자의 경우 사용자 지정 사용자 인터페이스를 개발하려면 IDTSForEachEnumeratorUI 인터페이스를 구현하는 클래스가 필요합니다.For a foreach enumerator, this requires a class that implements the IDTSForEachEnumeratorUI interface.

    사용자 지정 열거자는 ForEachLoop 컨테이너에 의해 호스팅됩니다.A custom enumerator is hosted by the ForEachLoop container. 런타임에 ForEachLoop 컨테이너는 사용자 지정 열거자의 GetEnumerator 메서드를 호출합니다.At run time, the ForEachLoop container calls the GetEnumerator method of the custom enumerator. 구현 하는 개체를 반환 하는 사용자 지정 열거자는 IEnumerable 인터페이스와 같은 ArrayList합니다.The custom enumerator returns an object that implements the IEnumerable interface, such as an ArrayList. 그런 다음 ForEachLoop는 컬렉션의 각 요소를 반복하고, 사용자 정의 변수를 통해 현재 요소의 값을 제어 흐름에 제공하고, 컨테이너에서 제어 흐름을 실행합니다.The ForEachLoop then iterates over each element in the collection, provides the value of the current element to the control flow through a user-defined variable, and executes the control flow in the container.

사용자 지정 ForEach 열거자 시작Getting Started with a Custom ForEach Enumerator

프로젝트 및 클래스 만들기Creating Projects and Classes

관리되는 foreach 열거자는 모두 ForEachEnumerator 기본 클래스에서 파생되므로 사용자 지정 foreach 열거자를 만들려면 먼저 관리되는 프로그래밍 언어로 클래스 라이브러리 프로젝트를 만들고 기본 클래스에서 상속되는 클래스를 만들어야 합니다.Because all managed foreach enumerators derive from the ForEachEnumerator base class, the first step when you create a custom foreach enumerator is to create a class library project in your preferred managed programming language and create a class that inherits from the base class. 이 파생 클래스에서 기본 클래스의 메서드 및 속성을 재정의하여 사용자 지정 기능을 구현합니다.In this derived class you will override the methods and properties of the base class to implement your custom functionality.

동일한 솔루션에서 사용자 지정 사용자 인터페이스에 대한 두 번째 클래스 라이브러리 프로젝트를 만듭니다.In the same solution, create a second class library project for the custom user interface. 배포를 쉽게 하려면 사용자 인터페이스에 대한 별도의 어셈블리를 만드는 것이 좋습니다. 이렇게 하면 foreach 열거자 또는 해당 사용자 인터페이스를 독립적으로 업데이트하거나 다시 배포할 수 있기 때문입니다.A separate assembly for the user interface is recommended for ease of deployment because it allows you to update and redeploy the foreach enumerator or its user interface independently.

강력한 이름 키 파일을 사용하여 빌드 시 생성될 어셈블리에 서명하도록 두 프로젝트를 구성합니다.Configure both projects to sign the assemblies that will be generated at build time by using a strong name key file.

DtsForEachEnumerator 특성 적용Applying the DtsForEachEnumerator Attribute

앞에서 만든 클래스에 DtsForEachEnumeratorAttribute 특성을 적용하여 해당 클래스를 foreach 열거자로 식별합니다.Apply the DtsForEachEnumeratorAttribute attribute to the class that you have created to identify it as a foreach enumerator. 이 특성은 foreach 열거자의 이름 및 설명 같은 디자인 타임 정보를 제공합니다.This attribute provides design-time information such as the name and description of the foreach enumerator. 이름 속성에 사용 가능한 열거자의 드롭다운 목록에서 표시는 컬렉션 탭은 Foreach 루프 편집기 대화 상자.The Name property appears in the dropdown list of available enumerators on the Collection tab of the Foreach Loop Editor dialog box.

UITypeName 속성을 사용하여 foreach 열거자를 사용자 지정 사용자 인터페이스에 연결합니다.Use the UITypeName property to link the foreach enumerator to its custom user interface. 사용이 속성에 필요한 공개 키 토큰을 가져오려면 sn.exe-t 사용자 인터페이스 어셈블리 서명에 사용할 키 쌍 (.snk) 파일에서 공개 키 토큰을 표시 합니다.To obtain the public key token that is required for this property, you an use sn.exe -t to display the public key token from the key pair (.snk) file that you intend to use to sign the user interface assembly.

Imports System  
Imports Microsoft.SqlServer.Dts.Runtime  
Namespace Microsoft.Samples.SqlServer.Dts  
    <DtsForEachEnumerator(DisplayName = "MyEnumerator", Description="A sample custom enumerator", UITypeName="FullyQualifiedTypeName,AssemblyName,Version=1.00.000.00,Culture=Neutral,PublicKeyToken=<publickeytoken>")> _   
    Public Class MyEnumerator  
     Inherits ForEachEnumerator  
        'Insert code here.  
    End Class  
End Namespace  
using System;  
using Microsoft.SqlServer.Dts.Runtime;  
namespace Microsoft.Samples.SqlServer.Dts  
{  
    [DtsForEachEnumerator( DisplayName = "MyEnumerator", Description="A sample custom enumerator", UITypeName="FullyQualifiedTypeName,AssemblyName,Version=1.00.000.00,Culture=Neutral,PublicKeyToken=<publickeytoken>")]  
    public class MyEnumerator : ForEachEnumerator  
    {  
        //Insert code here.  
    }  
}  

사용자 지정 열거자 빌드, 배포 및 디버깅Building, Deploying, and Debugging a Custom Enumerator

Integration ServicesIntegration Services에서 사용자 지정 foreach 열거자의 빌드, 배포 및 디버깅 단계는 다른 형식의 사용자 지정 개체에 대해 필요한 단계와 매우 비슷합니다.The steps for building, deploying, and debugging a custom foreach enumerator in Integration ServicesIntegration Services are very similar to the steps required for other types of custom objects. 자세한 내용은 참조 건물, Deploying, and Debugging Custom Objects합니다.For more information, see Building, Deploying, and Debugging Custom Objects.

관련 항목:See Also

사용자 지정 Foreach 열거자 코딩 Coding a Custom Foreach Enumerator
사용자 지정 ForEach 열거자에 대 한 사용자 인터페이스 개발Developing a User Interface for a Custom ForEach Enumerator