Özel bir Foreach Numaralandırıcı kodlama

Dan devralan bir sınıf oluşturduktan sonra ForEachEnumeratortemel sınıf ve uygulanan DtsForEachEnumeratorAttributeözniteliği sınıfa uygulaması özellikleri ve yöntemleri, özel işlevsellik sağlamak için temel sınıf geçersiz kılmalısınız.

Özel numaralayıcı çalışma örneği için bkz: Developing a User Interface for a Custom ForEach Enumerator.

Numaralayıcı başlatılıyor

Geçersiz kılınabilir InitializeForEachEnumeratorbaşvuruları paket içinde tanımlanan bağlantı yöneticileri ve önbellek hataları, uyarıları ve bilgi iletileri yükseltmek için kullanabileceğiniz olayları arabirimi başvuru yöntemi.

Numaralayıcı doğrulanıyor

Eğer geçersiz Validatenumaralayıcı düzgün yapılandırıldığını doğrulamak için yöntem. Yöntem ise Failure, numaralayıcı ve numaralayıcı içeren paketin idam. Bu yöntemin uygulanmasında özel numaralayıcı dayanır, ama her numaralayıcı Variableya ConnectionManagernesneleri, bu nesnelerin yöntem sağlanan koleksiyonlarında bulunduğunu doğrulamak için kodu eklediğiniz.

Aşağıdaki kod örneği gösterilmiştir Validatedenetleyen bir numaralayıcı özelliğinde belirtilen değişken.

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

Koleksiyon döndürme

Yürütme sırasında ForEachLoopkonteyner aramalar GetEnumeratoryöntemi özel numaralayıcı. Bu yöntem, numaralayıcı oluşturur ve onun koleksiyon öğeleri doldurur ve koleksiyonunu döndürür. ForEachLoopSonra koleksiyon öğeleri sırayla dolaşır ve onun denetimi akışı her öğe koleksiyonda yürütür.

Aşağıdaki örnekte uygulaması gösterilmiştir GetEnumeratorrasgele sayı dizisi döndürür.

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 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
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 simgesi (küçük) Integration Services ile güncel kalın

En son karşıdan yüklemeler, makaleler, örnekler ve Microsoft video yanı sıra topluluk seçili çözümleri için ziyaret Integration ServicesMSDN sayfası:


Bu güncelleştirmelerle ilgili otomatik bildirim almak için, sayfadaki RSS akışlarına abone olun.

Ayrıca bkz.

Görevler

Özel bir Foreach Numaralandırıcı oluşturma

Kullanıcı arabirimi için özel bir ForEach Numaralandırıcı geliştirme