Språk

Skapa en anpassad Foreach-uppräknare

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Stegen som ingår i att skapa en anpassad för varje enumerator liknar stegen för att skapa vilket annat anpassat objekt som helst för Integration Services:

  • Skapa en ny klass som ärver från basklassen. För en foreach-enumerator är ForEachEnumeratorbasklassen .

  • Applicera attributet som identifierar objekttypen på klassen. För en foreach enumerator är DtsForEachEnumeratorAttributeattributet .

  • Överstyr implementeringen av basklassens metoder och egenskaper. För en foreach-uppräknare är GetEnumerator metoden den viktigaste.

  • Eventuellt kan du utveckla ett anpassat användargränssnitt. För en foreach-enumerator krävs en klass som implementerar gränssnittet IDTSForEachEnumeratorUI .

En anpassad enumerator är värd i containern ForEachLoop . Vid körning anropar GetEnumerator containern ForEachLoop metoden för den anpassade enumeratorn. Den anpassade enumeratorn returnerar ett objekt som implementerar IEnumerable-gränssnittet , såsom en ArrayList. Sedan ForEachLoop itererar de över varje element i samlingen, tillhandahåller värdet av det aktuella elementet till kontrollflödet via en användardefinierad variabel och utför kontrollflödet i containern.

Att komma igång med en anpassad för varje enumerator

Skapa projekt och klasser

Eftersom alla managed foreach-enumeratorer härstammar från ForEachEnumerator basklassen är det första steget när du skapar en anpassad föreach enumerator att skapa ett klassbiblioteksprojekt i ditt föredragna managed programmeringsspråk och skapa en klass som ärver från basklassen. I denna härledda klass kommer du att åsidosätta metoderna och egenskaperna hos basklassen för att implementera din anpassade funktionalitet.

I samma lösning, skapa ett biblioteksprojekt av andra klass för det anpassade användargränssnittet. En separat assembler för användargränssnittet rekommenderas för att underlätta distributionen eftersom den låter dig uppdatera och omdistribuera foreach-enumeratorn eller dess användargränssnitt oberoende av sig.

Konfigurera båda projekten att signera de assemblies som ska genereras vid byggtiden genom att använda en stark namnnyckelfil.

Tillämpning av attributet DtsForEachEnumerator

Använd attributet DtsForEachEnumeratorAttribute på den klass du har skapat för att identifiera den som en foreach-enumerator. Denna egenskap ger designtidsinformation såsom namn och beskrivning av foreach-uppräknaren. Egenskapen Namn visas i rullgardinslistan över tillgängliga enumeratorer under fliken Collection i dialogrutan Foreach Loop Editor.

Använd egenskapen UITypeName för att länka foreach-enumeratorn till dess anpassade användargränssnitt. För att få den publika nyckeltoken som krävs för denna egenskap kan du använda sn.exe -t för att visa den publika nyckeltoken från nyckelparet (.snk)-filen som du tänker använda för att signera användargränssnittsassembleren.

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

Bygga, distribuera och felsöka en anpassad enumerator

Stegen för att bygga, distribuera och felsöka en anpassad för varje enumerator i Integration Services är mycket lika de steg som krävs för andra typer av anpassade objekt. För mer information, se Bygga, distribuera och felsöka anpassade objekt.