Język

Tworzenie niestandardowego enumeratora foreach

Dotyczy:SQL Server Środowisko SSIS Integration Runtime w usłudze Azure Data Factory

Kroki związane z tworzeniem niestandardowego enumeratora dla Integracji są podobne do kroków tworzenia dowolnego innego niestandardowego obiektu dla Integration Services:

  • Stwórz nową klasę, która dziedziczy po klasie bazowej. Dla enumeratora foreach klasa bazowa to ForEachEnumerator.

  • Przypisz atrybut identyfikujący typ obiektu do klasy. Dla enumeratora foreach atrybut to .DtsForEachEnumeratorAttribute

  • Nadpisuj implementację metod i właściwości klasy bazowej. Dla renumeratora foreach najważniejsza jest metoda GetEnumerator .

  • Opcjonalnie warto opracować niestandardowy interfejs użytkownika. Dla enumeratora foreach wymaga to klasy implementującej interfejs.IDTSForEachEnumeratorUI

Własny enumerator jest hostowany przez kontener.ForEachLoop W czasie ForEachLoop działania kontener wywołuje metodę GetEnumerator niestandardowego enumeratora. Niestandardowy enumerator zwraca obiekt implementujący interfejs IEnumerable , taki jak ArrayList. Następnie iteruje ForEachLoop każdy element w kolekcji, przekazuje wartość bieżącego elementu do przepływu sterowania przez zmienną zdefiniowaną przez użytkownika i wykonuje przepływ sterowania w kontenerze.

Zaczynam z niestandardowym formularzem dla każdego ankietera

Tworzenie projektów i zajęć

Ponieważ wszystkie zarządzane enumeratory foreach pochodzą z ForEachEnumerator klasy bazowej, pierwszym krokiem przy tworzeniu niestandardowego enumeratora dla enumeratora jest stworzenie projektu biblioteki klas w preferowanym języku zarządzanego programowania i stworzenie klasy dziedziczącej z klasy bazowej. W tej klasie pochodnej nadpisujesz metody i właściwości klasy bazowej, aby zaimplementować własną funkcjonalność.

W tym samym rozwiązaniu stwórz projekt biblioteki drugiej klasy dla niestandardowego interfejsu użytkownika. Zaleca się osobny asembler interfejsu użytkownika dla ułatwienia wdrożenia, ponieważ pozwala on na niezależną aktualizację i ponowne wdrożenie enumeratora foreach lub jego interfejsu użytkownika.

Konfiguruj oba projekty tak, aby podpisywały asemble, które będą generowane podczas budowania, używając pliku klucza o silnej nazwie.

Zastosowanie atrybutu DtsForEachEnumerator

Zastosuj DtsForEachEnumeratorAttribute atrybut do utworzonej przez Ciebie klasy, aby zidentyfikować ją jako enumeratora foreach. Ten atrybut dostarcza informacji z czasu projektowania, takich jak nazwa i opis enumeratora foreach. Właściwość Nazwa pojawia się na rozwijanej liście dostępnych enumeratorów na zakładce Kolekcja w oknie dialogowym Foreach Loop Editor .

Użyj tej UITypeName właściwości, aby połączyć enumeratora foreach z jego niestandardowym interfejsem użytkownika. Aby uzyskać token klucza publicznego wymagany dla tej właściwości, możesz użyć sn.exe -t , aby wyświetlić token klucza publicznego z pliku key pair (.snk), którego zamierzasz użyć do podpisania zespołu interfejsu użytkownika.

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

Budowanie, wdrażanie i debugowanie niestandardowego enumeratora

Kroki budowania, wdrażania i debugowania niestandardowego enumeratora foreach w Integration Services są bardzo podobne do tych wymaganych dla innych typów niestandardowych obiektów. Więcej informacji można znaleźć w sekcji Budowanie, wdrażanie i debugowanie niestandardowych obiektów.