Compartilhar via


Criando um enumerador Foreach personalizado

As etapas envolvidas na criação de um enumerador foreach são semelhantes às etapas da criação de qualquer outro objeto personalizado para o Integration Services:

  • Crie uma classe nova herdada da classe base. Para um enumerador foreach, a classe base é ForEachEnumerator.

  • Aplique o atributo que identifica o tipo de objeto para a classe. Para um enumerador foreach, o atributo é DtsForEachEnumeratorAttribute.

  • Substitua a implementação dos métodos e propriedades da classe base. Para um enumerador foreach, o mais importante é o método GetEnumerator.

  • Opcionalmente, desenvolva uma interface de usuário personalizada. Para um enumerador foreach, isso requer uma classe que implemente a interface IDTSForEachEnumeratorUI.

Um enumerador personalizado é hospedado pelo contêiner ForEachLoop. Durante o tempo de execução, o contêiner ForEachLoop chama o método GetEnumerator do enumerador personalizado. O enumerador personalizado retorna um objeto que implementa a interface IEnumerable, como uma ArrayList. O ForEachLoop itera em cada elemento da coleção, fornece o valor do elemento atual para o fluxo de controle por meio de uma variável definida pelo usuário e executa o fluxo de controle no contêiner.

Para obter um exemplo de funcionamento de um enumerador personalizado, consulte os exemplos do Integration Services no Codeplex.

Guia de Introdução com um enumerador ForEach personalizado

Criando projetos e classes

Como todos os enumeradores foreach derivam da classe base ForEachEnumerator, o primeiro passo para cria enumerador foreach é criar um projeto de biblioteca de classes na linguagem de programação gerenciada de sua preferência e criar uma classe herdada da classe base. Nessa classe derivada, você substituirá os métodos e propriedades da classe base para implementar sua funcionalidade personalizada.

Na mesma solução, crie um segundo projeto de biblioteca de classe para a interface de usuário personalizada. Recomenda-se um assembly separado para a interface de usuário para facilitar a implantação pois ela permite que você atualize e reimplante o enumerador foreach ou sua interface de usuário de forma independente.

Configure ambos os projetos para atribuir os assemblies que serão gerados no momento de compilação usando um arquivo de chave de nome forte.

Aplicando o atributo DtsForEachEnumerator

Aplique o atributo DtsForEachEnumeratorAttribute à classe que você criou para identificá-lo como um enumerador foreach. Esse atributo fornece informações de tempo de design como o nome e a descrição do enumerador foreach. A propriedade Name aparece na lista suspensa de enumeradores disponíveis na guia Coleção da caixa de diálogo Editor de Loop Foreach.

Use a propriedade UITypeName para vincular o enumerador foreach à sua interface do usuário personalizada. Para obter o token de chave pública requerido para essa propriedade, você pode usar o sn.exe -t para exibir o token de chave pública a partir do arquivo de par de chaves (.snk) a ser usado para atribuir o assembly de interface do usuário.

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.
    }
}

Compilando, implantando e depurando um enumerador personalizado

As etapas para compilar, implantar e depurar um enumerador foreach personalizado no Integration Services são muito semelhantes às etapas necessárias para outros tipos de objetos personalizados. Para obter mais informações, consulte Compilando, implantando e depurando objetos personalizados.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os mais recentes downloads, artigos, exemplos e vídeos da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN ou TechNet:

Para receber uma notificação automática das atualizações, assine os feeds RSS disponíveis na página.