Criando um enumerador Foreach personalizado
Aplica-se a: Tempo de execução de integração do SSIS do SQL Server no Azure Data Factory
As etapas envolvidas na criação de um enumerador foreach personalizado são semelhantes às etapas da criação de qualquer outro objeto personalizado do 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.
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 exigido para essa propriedade, você pode usar o sn.exe -t para exibir o token de chave pública por meio do arquivo de par de chaves (.snk) a ser usado para assinar o assembly da 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 Compilar, implantar e depurar objetos personalizados.
Consulte Também
Codificando um enumerador Foreach personalizado
Desenvolvendo uma interface do usuário para um enumerador ForEach personalizado