Partager via


Arguments obligatoires et groupes surchargés

Cette rubrique s'applique à Windows Workflow Foundation 4.

Les activités peuvent être configurées de sorte que certains arguments doivent être liés pour que l'activité soit valide pour l'exécution. L'attribut RequiredArgument sert à indiquer que certains arguments sur une activité sont requis et l'attribut OverloadGroup à grouper des catégories d'arguments requis. En utilisant les attributs, les auteurs d'activités peuvent fournir des configurations de validation d'activités simples ou complexes.

Utilisation des arguments requis

Pour utiliser l'attribut RequiredArgument dans une activité, indiquez les arguments souhaités à l'aide de l'objet RequiredArgumentAttribute. Cet exemple consiste à définir une activité Add qui a deux arguments requis.

public sealed class Add : CodeActivity<int>
{
    [RequiredArgument]
    public InArgument<int> Operand1 { get; set; }

    [RequiredArgument]
    public InArgument<int> Operand2 { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        return Operand1.Get(context) + Operand2.Get(context);
    }
}

En XAML, les arguments requis sont également indiqués à l'aide de l'objet RequiredArgumentAttribute. Dans cet exemple, l'activité Add est définie avec trois arguments et utilise une activité Assign pour effectuer l'opération d'ajout.

<Activity x:Class="ValidationDemo.Add" ...>
  <x:Members>
    <x:Property Name="Operand1" Type="InArgument(x:Int32)">
      <x:Property.Attributes>
        <RequiredArgumentAttribute />
      </x:Property.Attributes>
    </x:Property>
    <x:Property Name="Operand2" Type="InArgument(x:Int32)">
      <x:Property.Attributes>
        <RequiredArgumentAttribute />
      </x:Property.Attributes>
    </x:Property>
    <x:Property Name="Result" Type="OutArgument(x:Int32)" />
  </x:Members>
  <Assign>
    <Assign.To>
      <OutArgument x:TypeArguments="x:Int32">[Result]</OutArgument>
    </Assign.To>
    <Assign.Value>
      <InArgument x:TypeArguments="x:Int32">[Operand1 + Operand2]</InArgument>
    </Assign.Value>
  </Assign>
</Activity>

Si l'activité est utilisée et l'un ou l'autre des arguments requis n'est pas lié, l'erreur de validation suivante est retournée :

La valeur « Operand1 » d'un argument requis d'activité n'a pas été fournie.
Ee358733.note(fr-fr,VS.100).gifRemarque :
Pour plus d'informations sur le sujet suivant la vérification et le traitement des erreurs et avertissements de validation, consultez Appel de la validation d'activité.

Utilisation des groupes surchargés

Les groupes surchargés fournissent une méthode permettant d'indiquer quelles combinaisons d'arguments sont valides dans une activité. Les arguments sont groupés à l'aide de l'objet OverloadGroupAttribute. Un nom spécifié par l'objet OverloadGroupAttribute est attribué à chaque groupe. L'activité est valide lorsqu'un seul jeu d'arguments d'un groupe surchargé est lié. Dans l'exemple suivant, une classe CreateLocation est définie.

class CreateLocation: Activity
{
    [RequiredArgument]
    public InArgument<string> Name { get; set; }
   
    public InArgument<string> Description { get; set; }

    [RequiredArgument]
    [OverloadGroup("G1")]
    public InArgument<int> Latitude { get; set; }
    
    [RequiredArgument]
    [OverloadGroup("G1")]
    public InArgument<int> Longitude { get; set; }

    [RequiredArgument]
    [OverloadGroup("G2")][OverloadGroup("G3")]
    public InArgument<string> Street { get; set; }

    [RequiredArgument]
    [OverloadGroup("G2")]
    public InArgument<string> City { get; set; }

    [RequiredArgument]
    [OverloadGroup("G2")]
    public InArgument<string> State { get; set; }
    
    [RequiredArgument]
    [OverloadGroup("G3")]
    public InArgument<int> Zip { get; set; }                
}

L'objectif de cette activité est de spécifier un emplacement aux États-Unis d'Amérique. Pour ce faire, l'utilisateur de l'activité peut spécifier l'emplacement à l'aide de l'un des trois groupes d'arguments. Pour spécifier les combinaisons valides d'arguments, trois groupes surchargés sont définis. G1 contient les arguments Latitude et Longitude. G2 contient Street, City et State. G3 contient Street et Zip. Name est également un argument requis, mais il ne fait pas partie d'un groupe surchargé. Pour que cette activité soit valide, Name devrait être lié, ainsi que tous les arguments d'un seul et unique groupe surchargé.

Un groupe surchargé ne peut pas être un sous-ensemble ou un ensemble équivalent d'un autre groupe surchargé. La seule exception à cette règle est celle d'un sous-ensemble qui contient uniquement des arguments où RequiredArgument a la valeur false. Les groupes surchargés peuvent se chevaucher mais il se produit une erreur si l'intersection des groupes contient tous les arguments obligatoires d'un groupe surchargé ou des deux. Un groupe surchargé est considéré comme lié si tous les arguments RequiredArgument de celui-ci sont liés. Si un groupe n'a aucun argument RequiredArgument et au moins un argument lié, il est considéré comme lié. Si aucun des groupes n'est lié à moins qu'un groupe surchargé ne contienne aucun argument RequiredArgument, cela correspond à une erreur. La liaison d'arguments RequiredArgument à partir de plusieurs groupes surchargés n'est pas autorisée. Il se produit une erreur si vous avez plusieurs groupes surchargé liés, autrement dit si tous les arguments obligatoires d'un groupe surchargé sont liés et qu'un argument d'un autre groupe surchargé est également lié.