Share via


Özel bir Foreach Numaralandırıcı kodlama

Dan devralan bir sınıf oluşturduktan sonra ForEachEnumerator taban sınıfı ve uygulanan DtsForEachEnumeratorAttribute öznitelik sınıfa uygulaması özellikleri ve özel bir işlevi bilgisayarınızın. sağlamak için temel sınıfı yöntemleri kılmalıdır

Özel numaralayıcı çalışma örneği için bkz: Integration Services örnekleri üzerinde Codeplex.

Numaralayıcı başlatılıyor

Geçersiz kılabilirsiniz InitializeForEachEnumerator paket içinde tanımlanan bağlantı yöneticileri ve önbellek olayları arabirim, hatalar, uyarılar ve yükseltmek için kullanabileceğiniz başvurular için önbellek başvurular yöntem bilgilendirme iletileri.

Numaralayıcı doğrulanıyor

Geçersiz kılma, Validate numaralayıcı düzgün yapılandırılmış olduğunu doğrulamak için yöntem.Yöntem # sayı Failure, numaralayıcı ve numaralayıcı içeren paket çalıştırılmayacak.Bu yöntemin uygulanması Numaralandırıcı dayanır, ancak her numaralayıcı belirli Variable veya ConnectionManager nesneleri denetlemek için bu nesneler Koleksiyonlar yöntem sağlanan kodu eklemek

Aşağıdaki kod örneği uygulaması gösterilmiştir Validate belirtilen bir değişken için denetimlerini bir özellik numaralayıcı.

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

Koleksiyon döndürme

Yürütme sırasında ForEachLoop kapsayıcı çağrıları GetEnumerator yöntem, özel bir Numaralandırıcı.Bu yöntem, numaralayıcı oluşturur, öğe koleksiyonu doldurur ve sonra koleksiyonunu döndürür.The ForEachLoop then iterates the items in the collection, and executes its control flow for each item in the collection.

Aşağıdaki örnekte uygulaması gösterilmiştir GetEnumerator dizisi döndürür . rasgele tamsayılar

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

En son karşıdan yüklemeler, makaleler, örnekler ve seçilen topluluk çözümleri yanı sıra Microsoft videolar için ziyaret Integration Services sayfa msdn veya TechNet:

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