本主题适用于 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
构成)和一个 Body
活动,如果在范围内计算 SwitchRange
中的表达式,则将计划该活动。
下面的代码示例是 CaseRange
类的定义。
public class CaseRange<T> where T : IComparable
{
public T From { get; set; }
public T To { get; set; }
public Activity Action { get; set; }
}
![]() |
---|
示例中定义的 SwitchRange 和 CaseRange 类都是可使用实现 IComparable 的任何类型的泛型类(如 Switch 类)。
|
示例用法
下面的代码示例演示如何使用 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" }
};
使用此示例
使用 Visual Studio 2010 打开 SwitchRange.sln 解决方案文件。
若要生成解决方案,请按 F6。
若要运行解决方案,请按 Ctrl+F5。
![]() |
---|
您的计算机上可能已安装这些示例。在继续操作之前,请先检查以下(默认)目录:
<安装驱动器>:\WF_WCF_Samples
如果此目录不存在,请访问针对 .NET Framework 4 的 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 示例(可能为英文网页),下载所有 Windows Communication Foundation (WCF) 和 WF 示例。此示例位于以下目录:
<安装驱动器>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\SwitchRange
|