Crear un enumerador foreach personalizado
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.
Para obtener un ejemplo funcional de un enumerador personalizado, vea los ejemplos de Integration Services en Codeplex.
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 clase 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 clase 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 ficha Colección del cuadro de diálogo Editor de bucles Foreach.
Utilice la propiedad UITypeName para vincular el enumerador foreach a su interfaz de usuario personalizada. Para obtener el token de clave pública requerido para esta propiedad, puede utilizar sn.exe -t a fin de mostrar el token de clave pública del archivo de pares de claves (.snk) que desea utilizar 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, vea Generar, implementar y depurar objetos personalizados.
|