Idioma

Criando um enumerador Foreach personalizado

Aplica-se a: SQL Server SSIS Integration Runtime em Azure Data Factory

Os passos envolvidos na criação de um enumerador personalizado para cada um são semelhantes aos passos para criar qualquer outro objeto personalizado para Serviços de Integração:

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

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

  • Sobrepõe-se à implementação dos métodos e propriedades da classe base. Para um enumerador de foreach, o mais importante é o GetEnumerator método.

  • Opcionalmente, desenvolva uma interface de utilizador personalizada. Para um enumerador foreach, isto requer uma classe que implemente a IDTSForEachEnumeratorUI interface.

Um enumerador personalizado é alojado pelo ForEachLoop contentor. Em tempo de execução, o ForEachLoop contentor chama o GetEnumerator método do enumerador personalizado. O enumerador personalizado devolve um objeto que implementa a interface IEnumerable , como uma ArrayList. Depois, ForEachLoop itera sobre cada elemento da coleção, fornece o valor do elemento atual ao fluxo de controlo através de uma variável definida pelo utilizador e executa o fluxo de controlo no contentor.

Começar com um enumerador personalizado para cada um

Criação de Projetos e Aulas

Como todos os enumeradores managed foreach derivam da ForEachEnumerator classe base, o primeiro passo ao criar um enumerador foreach personalizado é criar um projeto de biblioteca de classes na sua linguagem de programação gerida preferida e criar uma classe que herde da classe base. Nesta classe derivada, irá sobrescrever os métodos e propriedades da classe base para implementar a sua funcionalidade personalizada.

Na mesma solução, crie um projeto de biblioteca de segunda classe para a interface personalizada. Recomenda-se um assembly separado para a interface de utilizador para facilitar a implementação, pois permite atualizar e reimplantar o enumerador foreach ou a sua interface de utilizador de forma independente.

Configure ambos os projetos para assinarem os assemblies que serão gerados em tempo de compilação, usando um ficheiro forte de chave de nome.

Aplicação do atributo DtsForEachEnumerator

Aplique o DtsForEachEnumeratorAttribute atributo à classe que criou para o identificar como um enumerador foreach. Este atributo fornece informação em tempo de design, como o nome e a descrição do enumerador foreach. A propriedade Nome aparece na lista suspensa de enumeradores disponíveis no separador Coleção da caixa de diálogo Foreach Loop Editor .

Use a UITypeName propriedade para ligar o enumerador foreach à sua interface de utilizador personalizada. Para obter o token de chave pública necessário para esta propriedade, pode usar sn.exe -t para mostrar o token de chave pública do ficheiro par de chaves (.snk) que pretende usar para assinar a montagem da interface de utilizador.

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

Construção, Implementação e Depuração de um Enumerador Personalizado

Os passos para construir, implementar e depurar um enumerador foreach personalizado nos Serviços de Integração são muito semelhantes aos passos exigidos para outros tipos de objetos personalizados. Para mais informações, veja Construção, Implementação e Depuração de Objetos Personalizados.