Condividi tramite


Creazione di un enumeratore Foreach personalizzato

Si applica a: SQL Server SSIS Integration Runtime in Azure Data Factory

I passaggi per la creazione di un enumeratore Foreach personalizzato sono simili a quelli richiesti per la creazione di qualsiasi altro oggetto personalizzato per Integration Services:

  • Creare una nuova classe che eredita dalla classe di base. Per un enumeratore Foreach, la classe di base è ForEachEnumerator.

  • Applicare alla classe l'attributo che identifica il tipo di oggetto. Per un enumeratore Foreach, l'attributo è DtsForEachEnumeratorAttribute.

  • Eseguire l'override dell'implementazione dei metodi e delle proprietà della classe di base. Per un enumeratore Foreach, il più importante è il metodo GetEnumerator.

  • Se si desidera, sviluppare un'interfaccia utente personalizzata. Per un enumeratore Foreach, questa operazione richiede una classe che implementi l'interfaccia IDTSForEachEnumeratorUI.

Un enumeratore personalizzato è ospitato dal contenitore ForEachLoop. In fase di esecuzione il contenitore ForEachLoop chiama il metodo GetEnumerator dell'enumeratore personalizzato. L'enumeratore personalizzato restituisce un oggetto che implementa l'interfaccia IEnumerable, ad esempio ArrayList. Tramite l'oggetto ForEachLoop viene quindi scorso ogni elemento della raccolta, viene fornito il valore dell'elemento corrente al flusso di controllo tramite una variabile definita dall'utente e viene eseguito il flusso di controllo nel contenitore.

Introduzione a un enumeratore Foreach personalizzato

Creazione di progetti e classi

Poiché tutti gli enumeratori Foreach gestiti derivano dalla classe di base ForEachEnumerator, il primo passaggio da completare quando si crea un enumeratore Foreach personalizzato consiste nel creare un progetto di libreria di classi nel linguaggio di programmazione gestito preferito e creare una classe che eredita dalla classe di base. In questa classe derivata si eseguirà l'override dei metodi e delle proprietà della classe di base per implementare la funzionalità personalizzata.

Nella stessa soluzione creare un secondo progetto di libreria di classi per l'interfaccia utente personalizzata. Per semplificare lo sviluppo, si consiglia di utilizzare un assembly distinto per l'interfaccia utente, perché in questo modo è possibile e ridistribuire l'enumeratore Foreach o la relativa interfaccia utente in modo indipendente.

Configurare entrambi i progetti per firmare gli assembly che verranno generati durante la compilazione utilizzando un file di chiave con nome sicuro.

Applicazione dell'attributo DtsForEachEnumerator

Applicare l'attributo DtsForEachEnumeratorAttribute alla classe creata per identificarla come enumeratore Foreach. Questo attributo fornisce informazioni in fase di progettazione, ad esempio il nome e la descrizione dell'enumeratore Foreach. La proprietà Name viene visualizzata nell'elenco a discesa degli enumeratori disponibili nella scheda Raccolta della finestra di dialogo Editor ciclo Foreach.

Utilizzare la proprietà UITypeName per collegare l'enumeratore Foreach alla relativa interfaccia utente personalizzata. Per ottenere il token di chiave pubblica richiesto per questa proprietà, è possibile usare sn.exe -t per visualizzare il token di chiave pubblica dal file della coppia di chiavi (con estensione snk) che si intende usare per firmare l'assembly dell'interfaccia utente.

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

Compilazione, distribuzione e debug di un enumeratore personalizzato

I passaggi per la compilazione, la distribuzione e il debug di un enumeratore Foreach personalizzato in Integration Services sono molto simili a quelli richiesti per altri tipi di oggetti personalizzati. Per altre informazioni, vedere Compilazione, distribuzione e debug di oggetti personalizzati.

Vedi anche

Scrittura del codice di un enumeratore Foreach personalizzato
Sviluppo di un'interfaccia utente per un enumeratore Foreach personalizzato