Création d'un énumérateur Foreach personnalisé
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, tel qu'un ArrayList. ForEachLoop parcourt ensuite chaque élément de la collection, fournit la valeur de l'élément actuel au flux de contrôle par le biais d'une variable définie par l'utilisateur et exécute le flux de contrôle dans le conteneur.
Pour obtenir un exemple fonctionnel d'énumérateur personnalisé, consultez les exemples Integration Services sur Codeplex.
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 vous servir de sn.exe - t pour afficher le jeton de clé publique du fichier de paire de clés (.snk) que vous souhaitez 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.
|