Partager via


Activité personnalisée pour commuter une plage de valeurs

Cette rubrique s'applique à Windows Workflow Foundation 4.

Cet exemple montre comment créer une activité personnalisée qui étend l'utilisation d'un Switch. Une instruction Switch classique autorise la commutation basée sur une valeur unique. Mais dans certains scénarios d'application professionnelle, la commutation d'une activité est basée sur une plage de valeurs. Par exemple, une activité peut exécuter une action lorsque la valeur de commutation est comprise entre 1 et 5, une autre action lorsque la valeur est comprise entre 6 et 10, et une action par défaut pour toutes les autres valeurs. Cette activité personnalisée permet exactement ce scénario.

Activité SwitchRange

L'activité SwitchRange planifie une activité enfant lorsque la valeur de résultat de son expression est comprise dans la plage de l'un de ses Cases.

L'exemple de code suivant est une activité personnalisée qui commute en fonction d'une plage de valeurs.

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

Propriété

Description

Expression

Il s'agit de l'expression à évaluer et à comparer par rapport aux plages spécifiées dans la liste Cases. Le résultat de l'expression est de type T.

Cases

Chaque cas se compose d'une plage (From et To) et d'une activité (Body). L'expression est évaluée et comparée par rapport aux plages. Si le résultat de l'expression est compris dans la plage de l'un des cas, l'activité correspondante est exécutée.

Default

Activité qui est exécutée lorsque aucune correspondance n'est obtenue pour le cas. Lorsque la valeur définie est Null, aucune action n'est entreprise.

Classe CaseRange

La classe CaseRange représente une plage dans une activité SwitchRange. Chaque instance de CaseRange contient une plage (composée d'un From et d'un To) et une activité Body qui est planifiée si l'expression dans SwitchRange est évaluée dans la plage.

L'exemple de code suivant est la définition de la classe 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(fr-fr,VS.100).gifRemarque :
Les deux classes CaseRange et SwitchRange, qui sont définies dans l'exemple, sont des classes génériques pouvant fonctionner avec n'importe quel type qui implémente IComparable, comme la classe Switch.

Utilisation de l'exemple

L'exemple de code suivant illustre l'utilisation de l'activité 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" }
};

Pour utiliser cet exemple

  1. À l'aide de Visual Studio 2010, ouvrez le fichier solution SwitchRange.sln.

  2. Pour générer la solution, appuyez sur F6.

  3. Pour exécuter la solution, appuyez sur CTRL+F5.

Dd797581.Important(fr-fr,VS.100).gif Remarque :
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.

<LecteurInstall>:\WF_WCF_Samples

Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.

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