次の方法で共有


カスタム Foreach 列挙子の作成

カスタム foreach 列挙子の作成手順は、Integration Services の他のカスタム オブジェクトの作成手順と同様です。

  • 基本クラスを継承する新しいクラスを作成します。foreach 列挙子用の基本クラスは ForEachEnumerator です。
  • クラスに、オブジェクトの種類を識別する属性を適用します。foreach 列挙子用の属性は DtsForEachEnumeratorAttribute です。
  • 基本クラスのメソッドとプロパティの実装をオーバーライドします。foreach 列挙子で、最も重要なのは、GetEnumerator メソッドです。
  • 必要に応じて、カスタム ユーザー インターフェイスを開発します。その場合、foreach 列挙子では、IDTSForEachEnumeratorUI インターフェイスを実装するクラスが必要です。

カスタム列挙子は、ForEachLoop コンテナによってホストされます。実行時は、ForEachLoop コンテナが、カスタム列挙子の GetEnumerator メソッドを呼び出します。カスタム列挙子は、ArrayList などの IEnumerable インターフェイスを実装するオブジェクトを返します。次に、ForEachLoop はコレクション内の各要素を繰り返し処理し、ユーザー定義変数を介して現在の要素の値を制御フローに渡し、コンテナの制御フローを実行します。

カスタム列挙子の実際のサンプルについては、「ForEachDirectory サンプル」を参照してください。

カスタム ForEach 列挙子の概要

プロジェクトおよびクラスの作成

すべてのマネージ foreach 列挙子は ForEachEnumerator 基本クラスから派生するため、カスタム foreach 列挙子を作成するには、最初に任意のマネージ プログラミング言語でクラス ライブラリ プロジェクトを作成し、基本クラスを継承するクラスを作成します。この派生クラスで、基本クラスのメソッドとプロパティをオーバーライドして、カスタム機能を実装します。

同じソリューション内に、もう 1 つのクラス ライブラリ プロジェクトをカスタム ユーザー インターフェイス用に作成します。配置を容易にするため、ユーザー インターフェイス用に別個のアセンブリを使用することをお勧めします。そうすれば、foreach 列挙子やそのユーザー インターフェイスの更新や再配置を個別に行うことができます。

どちらのプロジェクトも、アセンブリに署名するよう構成します。アセンブリは、厳密な名前のキー ファイルを使用して、ビルド時に生成されます。

DtsForEachEnumerator 属性の適用

作成したクラスに DtsForEachEnumeratorAttribute 属性を適用して、そのクラスが foreach 列挙子として識別されるようにします。この属性は、foreach 列挙子の名前や説明など、デザイン時の情報を表します。Name プロパティは、[Foreach ループ エディタ] ダイアログ ボックスの [コレクション] タブにある使用可能な列挙子のドロップダウン リストに表示されます。

UITypeName プロパティを使用して、foreach 列挙子をそのカスタム ユーザー インターフェイスにリンクします。このプロパティに必要な公開キー トークンを取得するには、sn.exe -t を使用して、ユーザー インターフェイス アセンブリへの署名に使用するキー ペア (.snk) ファイルから公開キー トークンを表示します。

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

カスタム列挙子の作成、配置、およびデバッグ

Integration Services でカスタム foreach 列挙子を作成、配置、およびデバッグする手順は、他の種類のカスタム オブジェクトで必要な手順とほとんど同様です。詳細については、「カスタム オブジェクトのビルド、配置、およびデバッグ」を参照してください。

参照

処理手順

カスタム Foreach 列挙子のコーディング
カスタム ForEach 列挙子用ユーザー インターフェイスの開発

ヘルプおよび情報

SQL Server 2005 の参考資料の入手