Настраиваемое действие для переключения в диапазоне значений
Данный раздел относится к версии 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 |
Здесь представлено выражение, которое вычисляется и сравнивается с диапазонами в списке вариантов. Результат выражения имеет тип 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
Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.
<диск_установки>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\SwitchRange
|