Udostępnij za pośrednictwem


Moduł wyliczający Foreach niestandardowego kodowania

Po utworzeniu klasy, która dziedziczy z ForEachEnumerator Klasa podstawowa i stosowane DtsForEachEnumeratorAttribute atrybut do klasy, należy zastąpić wykonania właściwości i metod klasy podstawowej, aby zapewnić funkcje niestandardowe.

Przykładowe pracy niestandardowego modułu wyliczającego, zobacz Integration Services próbki na witrynie Codeplex.

Inicjowanie modułu wyliczającego

Można zastąpić InitializeForEachEnumerator metoda pamięci podręcznej odwołań do menedżerów połączenia zdefiniowane w pakieti odwołań do pamięci podręcznej do interfejs zdarzenia, można podnieść błędy, ostrzeżenia i komunikaty informacyjne.

Sprawdzanie poprawności modułu wyliczającego

Można zastąpić Validate metoda sprawdzania, czy moduł wyliczający jest skonfigurowany poprawnie.Jeśli metoda zwraca Failure, moduł wyliczający i pakiet, który zawiera moduł wyliczający nie zostanie wykonana.Implementacja tej metoda jest specyficzne dla każdego modułu wyliczającego, ale jeśli moduł wyliczający opiera się na Variable lub ConnectionManager obiektów, należy dodać kod, aby sprawdzić, czy te obiekty istnieje w kolekcji, które są dostarczane do metoda.

Poniższy przykład kodu pokazuje implementację Validate czy sprawdza, czy zmienna określona we właściwość modułu wyliczającego.

private string variableNameValue;

public string VariableName
{
    get{ return this.variableNameValue; }
    set{ this.variableNameValue = value; }
}

public override DTSExecResult Validate(Connections connections, VariableDispenser variableDispenser, IDTSInfoEvents infoEvents, IDTSLogging log)
{
    if (!variableDispenser.Contains(this.variableNameValue))
    {
        infoEvents.FireError(0, "MyEnumerator", "The Variable " + this.variableNameValue + " does not exist in the collection.", "", 0);
            return DTSExecResult.Failure;
    }
    return DTSExecResult.Success;
}
Private variableNameValue As String
 
Public Property VariableName() As String
    Get 
         Return Me.variableNameValue
    End Get
    Set (ByVal Value As String) 
         Me.variableNameValue = value
    End Set
End Property
 
Public Overrides Function Validate(ByVal connections As Connections, ByVal variableDispenser As VariableDispenser, ByVal infoEvents As IDTSInfoEvents, ByVal log As IDTSLogging) As DTSExecResult
    If Not variableDispenser.Contains(Me.variableNameValue) Then
        infoEvents.FireError(0, "MyEnumerator", "The Variable " + Me.variableNameValue + " does not exist in the collection.", "", 0)
            Return DTSExecResult.Failure
    End If
    Return DTSExecResult.Success
End Function

Zwracanie kolekcji

Podczas wykonywania ForEachLoop kontener wywołania GetEnumerator metoda niestandardowy moduł wyliczający.W tym metoda, moduł wyliczający tworzy i wypełnia swojej kolekcja elementów, a następnie zwraca kolekcja.ForEachLoop Wykonuje iteracje elementów kolekcja i wykonuje przepływ sterowania dla każdego element kolekcja.

Poniższy przykład pokazuje implementację GetEnumerator , zwraca tablicę liczb całkowitych losowe.

public override object GetEnumerator()
{
    ArrayList numbers = new ArrayList();

    Random randomNumber = new Random(DateTime.Now);

    for( int x=0; x < 100; x++ )
        numbers.Add( randomNumber.Next());

    return numbers;
}
Public Overrides Function GetEnumerator() As Object
    Dim numbers As ArrayList =  New ArrayList() 
 
    Dim randomNumber As Random =  New Random(DateTime.Now) 
 
        Dim x As Integer
        For  x = 0 To  100- 1  Step  x + 1
        numbers.Add(randomNumber.Next())
        Next
 
    Return numbers
End Function
Ikona usług Integration Services (mała)Bieżąco z usług integracji

Najnowsze pliki do pobrania, artykuły, próbki i wideo firmy Microsoft, jak również wybranych rozwiązań ze Wspólnoty, odwiedź witrynę Integration Services strona na MSDN i TechNet:

Aby otrzymywać automatyczne powiadomienia dotyczące tych aktualizacji, zasubskrybuj źródła danych RSS dostępne na tej stronie.