Udostępnij za pośrednictwem


Kodowanie wyliczania Foreach do niestandardowego

Po utworzeniu klasy, która dziedziczy ForEachEnumerator utworzyć klasę i stosowane DtsForEachEnumeratorAttribute atrybut do klasy, należy zastąpić stosowania właściwości i metod klasy podstawowej umożliwiają korzystanie z funkcji niestandardowej.

Przykładowe niestandardowe moduł wyliczający pracy zobacz Developing a User Interface for a Custom ForEach Enumerator.

Inicjowanie modułu wyliczającego

Można zastąpić InitializeForEachEnumerator(Connections, IDTSInfoEvents, ObjectReferenceTracker) Metoda odwołań do pamięci podręcznej menedżerów połączenia określonych w pakiecie i odwołań do pamięci podręcznej do interfejs zdarzenia, które pomagają podnieść błędy, ostrzeżenia i komunikaty informacyjne.

Sprawdzanie poprawności moduł wyliczający

Można zastąpić Validate(Connections, VariableDispenser, IDTSInfoEvents, IDTSLogging) Metoda, aby sprawdzić, czy moduł wyliczający jest skonfigurowany poprawnie. Jeśli metoda zwraca Failure, moduł wyliczający i pakiet, który zawiera moduł wyliczający nie zostaną wykonane. Implementacja tej metoda jest specyficzne dla każdego modułu wyliczającego, ale jeśli moduł wyliczający opiera się na Variable lub ConnectionManager obiekty, należy dodać kod, aby sprawdzić, czy te obiekty znajdują się w kolekcje, które są dostarczane do metoda.

Poniższy przykład kodu demonstruje implementacja Validate(Connections, VariableDispenser, IDTSInfoEvents, IDTSLogging) sprawdza, zmienna określonego 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

Zwraca kolekcja

Podczas wykonywania ForEachLoop kontener wywołania GetEnumerator(Connections, VariableDispenser, IDTSInfoEvents, IDTSLogging) Metoda niestandardowy moduł wyliczający. W tej metodzie moduł wyliczający tworzy i wypełnia swojej kolekcja elementów i zwraca kolekcja.The ForEachLoop then iterates the items in the kolekcja, and executes its przepływ sterowania for each element in the kolekcja.

W poniższym przykładzie pokazano implementacja GetEnumerator(Connections, VariableDispenser, IDTSInfoEvents, IDTSLogging) które zwraca tablicę liczb losowych.

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
Integration Services icon (small) Konfiguracja w aktualizacji z usług integracja Services pobytu

Najnowsze pliki do pobrania, artykuły, próbki, i pliki wideo firmy Microsoft, jak również wybranego rozwiązania od Wspólnoty, odwiedź witrynę Integration Services strona w witrynie MSDN lub TechNet:

Automatycznego powiadomienie tych aktualizacji należy subskrybować źródła danych RSS, które jest dostępne strona.