In this task, we will create a WF program that accepts arguments when initialized in the WF host. In WF4, we can use InArguments to define the way data flows into an activity.
How to do it...
Create a workflow project:
Create a new Workflow Console Application under the Chapter01 solution. Name the project UseInArgument.
Author the WF program:
Create a workflow as shown in the following screenshot:
Write code to host the workflow.
Open the Program.cs file and change the host code as follows:
using System.Activities;
using System.Activities.Statements;
namespace UseInArgument {
class Program {
static void Main(string[] args) {
WorkflowInvoker.Invoke(new Workflow1()
{
FirstName="Andrew",
SecondName="Zhu"
});
}
}
}
Run it:
Set UseInArgument as StartUp project. Press Ctrl+F5 to build and run the workflow without debugging. The application should run in a console window and print the following message:
How it works...
Consider the following statement from the code we saw in the preceding section:
FirstName="Andrew"
FirstName is an InArgument type, but how can we assign a string to InArgument without any explicit cast? This is because InArgument is declared with an attribute System.ComponentModel.TypeConverterAttribute(System.Activities.XamlIntegration.InArgumentConverter). The class inheritance is shown in the following diagram: