次の方法で共有


値の範囲で切り替えを行うカスタム アクティビティ

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

このサンプルでは、Switch の使用を拡張するカスタム アクティビティを作成する方法を示します。従来の Switch ステートメントでは、単一の値に基づく切り替えが可能です。しかし、ビジネス上のシナリオでは、値の範囲に基づいて切り替えを行う必要があるアクティビティもあります。たとえば、切り替えの基準となる値が 1 ~ 5 の場合はあるアクションを実行し、6 ~ 10 の場合は別のアクションを実行し、それ以外の値の場合は既定のアクションを実行するようなアクティビティもあります。このカスタム アクティビティを使用すると、そのようなシナリオが可能になります。

SwitchRange アクティビティ

SwitchRange アクティビティは、式の結果の値がいずれかの Cases の範囲内に含まれる場合に子アクティビティをスケジュールします。

値の範囲に基づいて切り替えを行うカスタム アクティビティのコード例を次に示します。

public sealed class SwitchRange<T> : NativeActivity where T : IComparable
{
   [RequiredArgument]
   [DefaultValue(null)]
   public InArgument<T> Expression { get; set; }

   public IList<CaseRange<T>> Cases

   [DefaultValue(null)]
   public Activity Default { get; set; }}
}

プロパティ

説明

Expression

評価されて Cases リストの範囲と比較される式です。式の結果は T 型です。

Cases

各ケースは、範囲 (From および To) とアクティビティ (Body) で構成されます。式が評価されて範囲と比較され、式の結果がいずれかのケースの範囲内の値になると、対応するアクティビティが実行されます。

Default

一致するケースがない場合に実行されるアクティビティです。null に設定されている場合、アクションは実行されません。

CaseRange クラス

CaseRange クラスは、SwitchRange アクティビティ内の範囲を表します。CaseRange の各インスタンスには、範囲 (From および To) と、SwitchRange の式の評価結果が範囲内の値になった場合にスケジュールされる Body アクティビティが含まれます。

CaseRange クラスの定義のコード例を次に示します。

public class CaseRange<T> where T : IComparable
{
    public T From { get; set; }

    public T To { get; set; }

    public Activity Action { get; set; }
}
Dd797581.note(ja-jp,VS.100).gif注 :
このサンプルで定義されている SwitchRange クラスと CaseRange クラスはどちらも、Switch クラスと同様に、IComparable を実装する任意の型で実行できるジェネリック クラスです。

サンプルの使用方法

SwitchRange アクティビティの使用方法を次のコード例に示します。

Activity SwitchRange = new SwitchRange<int>
{
    Expression = new InArgument<int>(value),
    Cases = 
    {
        new CaseRange<int>                    
        {
            From = 1,
            To = 5,
            Action = new WriteLine
            {
                Text = "Case 1-5 selected",
            }
        },
        new CaseRange<int>
        {
            From = 6,
            To = 10,
            Action = new WriteLine
            {
                Text = "Case 6-10 selected",
            }
        }
    },
    Default = new WriteLine { Text = "Default Case selected" }
};

このサンプルを使用するには

  1. Visual Studio 2010 を使用して、SwitchRange.sln ソリューション ファイルを開きます。

  2. ソリューションをビルドするには、F6 キーを押します。

  3. ソリューションを実行するには、Ctrl キーを押しながら F5 キーを押します。

Dd797581.Important(ja-jp,VS.100).gif 注 :
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。

<InstallDrive>:\WF_WCF_Samples

このディレクトリが存在しない場合は、「.NET Framework 4 向けの Windows Communication Foundation (WCF) および Windows Workflow Foundation (WF) のサンプル」にアクセスして、Windows Communication Foundation (WCF) および WF のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。

<InstallDrive>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\SwitchRange