Création d'un énumérateur Foreach personnalisé

S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory

Les étapes de création d'un énumérateur Foreach personnalisé sont semblables aux étapes de création de tout autre objet personnalisé pour Integration Services :

  • Créer une classe qui hérite de la classe de base. Pour un énumérateur Foreach, la classe de base est ForEachEnumerator.

  • Appliquer l'attribut qui identifie le type d'objet auprès de la classe. Pour un énumérateur Foreach, l'attribut est DtsForEachEnumeratorAttribute.

  • Substituer l'implémentation des méthodes et des propriétés de la classe de base. Pour un énumérateur Foreach, l'élément le plus important est la méthode GetEnumerator.

  • Développer éventuellement une interface utilisateur personnalisée. Pour un énumérateur Foreach, cette opération requiert une classe qui implémente l'interface IDTSForEachEnumeratorUI.

Un énumérateur personnalisé est hébergé par le conteneur ForEachLoop. Au moment de l'exécution, le conteneur ForEachLoop appelle la méthode GetEnumerator de l'énumérateur personnalisé. L’énumérateur personnalisé retourne un objet qui implémente l’interface IEnumerable, par exemple un objet ArrayList. ForEachLoop parcourt ensuite chaque élément de la collection, fournit la valeur de l'élément actuel au flux de contrôle au moyen d'une variable définie par l'utilisateur et exécute le flux de contrôle dans le conteneur.

Mise en route d'un énumérateur Foreach personnalisé

Création de projets et de classes

Comme tous les énumérateurs Foreach managés dérivent de la classe de base ForEachEnumerator, la première étape de création d'un énumérateur Foreach personnalisé consiste à créer un projet Bibliothèque de classes dans votre langage de programmation managé par défaut et créer une classe qui hérite de la classe de base. Dans cette classe dérivée, vous devez substituer les méthodes et les propriétés de la classe de base pour implémenter vos fonctionnalités personnalisées.

Dans la même solution, créez un deuxième projet Bibliothèque de classes pour l'interface utilisateur personnalisée. Il est recommandé d'utiliser un assembly distinct pour l'interface utilisateur afin de faciliter le déploiement car vous pouvez ainsi mettre à jour et redéployer l'énumérateur Foreach ou son interface utilisateur de manière indépendante.

Configurez les deux projets pour qu'ils signent les assemblys qui seront créés au moment de la génération à l'aide d'un fichier de clé de nom fort.

Application de l'attribut DtsForEachEnumerator

Appliquez l'attribut DtsForEachEnumeratorAttribute à la classe que vous avez créée pour l'identifier en tant qu'énumérateur Foreach. Cet attribut fournit des informations au moment de la conception, telles que le nom et la description de l'énumérateur Foreach. La propriété Name apparaît dans la liste déroulante des énumérateurs disponibles sous l’onglet Collection de la boîte de dialogue Éditeur de boucle Foreach.

Utilisez la propriété UITypeName pour lier l'énumérateur Foreach à son interface utilisateur personnalisée. Pour obtenir le jeton de clé publique requis pour cette propriété, vous pouvez utiliser sn.exe -t de manière à afficher le jeton de clé publique du fichier de paire de clés (.snk) que vous voulez utiliser pour signer l’assembly de l’interface utilisateur.

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

Génération, déploiement et débogage d'un énumérateur personnalisé

Les étapes pour générer, déployer et déboguer un énumérateur Foreach personnalisé dans Integration Services sont très semblables aux étapes requises pour les autres types d'objets personnalisés. Pour plus d’informations, consultez Génération, déploiement et débogage d’objets personnalisés.

Voir aussi

Codage d'un énumérateur Foreach personnalisé
Développement d'une interface utilisateur pour un énumérateur ForEach personnalisé