2017-01-04 4 views
0

J'ai une activité InvokeMethod dans Windows Workflow Foundation. Ce flux de travail est assez simple:Comment affecter une variable dans un flux de travail si l'activité InvokeMethod renvoie un objet?

  1. demander à l'utilisateur pour son/sa taille
  2. si la hauteur est supérieure à 5,9, puis demander à son/ses détails profil
  3. Détails du profil affichage

Pour réaliser ceci, j'ai créé un workflow, vu ci-dessous: enter image description here

Comment puis-je affecter un objet qui est retourné par InvokeMethod comme variable? J'ai envoyé my code on GitHub.

Répondre

1

Voici la solution dans les propriétés Visual Studio:

d'abord ajouter une variable à votre flux de travail:

Printscreen workflow's variables

déposer une activité InvokeMethod dans votre espace de travail de flux de travail et modifier les propriétés:

PrintScreen (Properties of InvokeMethod)

  1. MethodName: Entrez votre MethodName
  2. Paramètres: Définir les paramètres (Direction: In, Type: typeNeeded, Valeur yourValue)
  3. Résultat: Entrez le nom de la variable de votre flux de travail défini précédemment
  4. TargetType : Définissez le type de méthode type de retour

est la solution ici, dans XAMLX

xmlns:mca="clr-namespace:Microsoft.CSharp.Activities;assembly=System.Activities" 
xmlns:p1="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
xmlns:sap2010="http://schemas.microsoft.com/netfx/2010/xaml/activities/presentation" 

<p1:InvokeMethod sap2010:WorkflowViewState.IdRef="InvokeMethod_1" MethodName="YourMethodName" TargetType="x:Object"> 
    <p1:InvokeMethod.Result> 
     <p1:OutArgument x:TypeArguments="x:Object"> 
      <mca:CSharpReference x:TypeArguments="x:Object">workflowVariableName</mca:CSharpReference> 
     </p1:OutArgument> 
    </p1:InvokeMethod.Result> 
    <p1:InArgument x:TypeArguments="x:Int32"> 
     <mca:CSharpValue x:TypeArguments="x:Int32">variableNamePassedToMyMethod;</mca:CSharpValue> 
    </p1:InArgument> 
</p1:InvokeMethod>