Compartir a través de


Crear un enumerador foreach personalizado

Se aplica a:SQL Server SSIS Integration Runtime en Azure Data Factory

Los pasos necesarios para crear un enumerador foreach personalizado son similares a los pasos para crear cualquier otro objeto personalizado para Integration Services:

  • Cree una clase nueva que herede de la clase base. Para un enumerador foreach, la clase base es ForEachEnumerator.

  • Aplique el atributo que identifica el tipo de objeto para la clase. Para un enumerador foreach, el atributo es DtsForEachEnumeratorAttribute.

  • Invalide la implementación de los métodos y las propiedades de la clase base. Para un enumerador foreach, el más importante es el método GetEnumerator.

  • Si lo desea, desarrolle una interfaz de usuario personalizada. Para un enumerador foreach, esto requiere una clase que implemente la interfaz IDTSForEachEnumeratorUI.

El contenedor ForEachLoop hospeda un enumerador personalizado. En tiempo de ejecución, el contenedor ForEachLoop llama al método GetEnumerator del enumerador personalizado. El enumerador personalizado devuelve un objeto que implementa la interfaz IEnumerable, por ejemplo, un objeto ArrayList. A continuación, ForEachLoop establece una iteración en cada elemento de la colección, proporciona el valor del elemento actual al flujo de control a través de una variable definida por el usuario y ejecuta el flujo de control en el contenedor.

Introducción a los enumeradores Foreach personalizados

Crear proyectos y clases

Dado que todos los enumeradores foreach administrados se derivan de la clase base ForEachEnumerator, el primer paso al crear un enumerador foreach personalizado consiste en crear un proyecto de bibliotecas de clases en el lenguaje de programación administrado que prefiera y crear una clase que herede de la clase base. En esta clase derivada se invalidarán los métodos y las propiedades de la clase base para implementar la funcionalidad personalizada.

En la misma solución, cree un segundo proyecto de bibliotecas de clases para la interfaz de usuario personalizada. Se recomienda utilizar un ensamblado independiente para la interfaz de usuario a fin de facilitar la implementación, ya que le permite actualizar y volver a implementar el enumerador foreach o su interfaz de usuario de forma independiente.

Configure ambos proyectos para firmar los ensamblados que se generarán en tiempo de compilación mediante un archivo de clave de nombre seguro.

Aplicar el atributo DtsForEachEnumerator

Aplique el atributo DtsForEachEnumeratorAttribute a la clase que ha creado para identificarla como enumerador foreach. Este atributo proporciona información en tiempo de diseño, como el nombre y la descripción del enumerador foreach. La propiedad Name aparece en la lista desplegable de enumeradores disponibles en la pestaña Colección del cuadro de diálogo Editor de bucles Para cada uno.

Utilice la propiedad UITypeName para vincular el enumerador foreach a su interfaz de usuario personalizada. Para obtener el token de clave pública necesario para esta propiedad, puede usar sn.exe -t con el fin de mostrar el token de clave pública del archivo de pares de claves (.snk) que quiere usar para firmar el ensamblado de la interfaz de usuario.

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

Generar, implementar y depurar un enumerador personalizado

Los pasos para generar, implementar y depurar un enumerador foreach personalizado en Integration Services son muy similares a los pasos requeridos para otros tipos de objetos personalizados. Para obtener más información, consulte Generar, implementar y depurar objetos personalizados.

Consulte también

Codificar un enumerador foreach personalizado
Desarrollar una interfaz de usuario para un enumerador foreach personalizado