WF4.0 Beta1 参数 Arguments

 

目录

1    [In,Out,In/Out]参数使用说明    1

2    定义Arguments    1

3    In参数    1

3.1    [In参数]是[System.Activities.InArgument<T>]类型的属性,    1

3.2    设计时,可以在属性框中,[In参数]的赋值,[In参数]的赋值要使用"表达式"方式    2

3.3    运行时,可以启动参数的方式[In参数]赋值    2

3.4    [In参数]不能在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到    3

3.5    [In参数]不能用[Assign]赋值    3

3.6    [In参数]可以在流程内部被其它[表达式]引用    3

4    Out 参数    3

4.1    [Out参数]是[System.Activities.OutArgument<T>]类型的属性,    3

4.2    [Out参数]可在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到    4

4.3    运行时,可以启动参数的方式[Out 参数]赋值    4

4.4    设计时,不能在属性框中,[In参数]的赋值    4

4.5    [out参数]可用[Assign]赋值    5

4.6    [out参数]可以在流程内部被其它[表达式]引用    5

5    In/Out参数    5

5.1    1.[In/Out参数]是[System.Activities.InOutArgument<T>]类型的属性    5

5.2    2.运行时,可以启动参数的方式对[IN/Out 参数]赋值,可在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到[IN/Out 参数]值    5

5.3    设计时,不能在属性框中,[In/Out参数]的赋值    6

5.4    [In/Out参数]可用[Assign]赋值    6

5.5    [In/Out参数]可以在流程内部被其它[表达式]引用    6

 

 

Arguments是WF的输出和输入接口.参数属性Direction,有In,Out,In/Out,Propery选项

[In,Out,In/Out]参数使用说明

 

启动传参

OnCompleted 事件访问

属性栏赋值

表达式访问

Assign 赋值

In

V

X

V

V

X

Out

V

V

X

V

V

In/Out

V

V

X

V

V

 

 

 

定义

Arguments

 

 

In参数

[In参数]是[System.Activities.InArgument<T>]类型的属性,

 

代码定义方式

public class myElement : CodeActivity

{

 

protected override void Execute(CodeActivityContext context)

{

string v = s.Get(context);

System.Console.WriteLine(v);

 

}

 

public System.Activities.InArgument<string> s

{ set; get; }

 

}

 

xaml定义方式

<p:Activity mc:Ignorable=""

x:Class="WorkflowConsoleApplication3.myActivity"

xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"

xmlns:__myActivity="clr-namespace:WorkflowConsoleApplication3;"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities"

xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<x:Members>

<x:Property Name="s" Type="p:InArgument(x:String)" />

</x:Members>

<p:WriteLine>[s]</p:WriteLine>

</p:Activity>

 

 

设计时,可以在属性框中,[In参数]的赋值,[In参数]的赋值要使用"表达式"方式

流程

宿主

WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());

myInstance.Run();

结果

 

运行时,可以启动参数的方式[In参数]赋值

宿主

System.Collections.Generic.Dictionary<string, object> d = new Dictionary<string, object>();

d.Add("s", "wxwinter");

 

WorkflowInstance myInstance = new WorkflowInstance(new myElement(),d);

myInstance.Run();

结果

 

[In参数]不能在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到

 

[In参数]不能用[Assign]赋值

[In参数]可以在流程内部被其它[表达式]引用

Out 参数

[Out参数]是[System.Activities.OutArgument<T>]类型的属性,

代码定义方式如下:

public class myElement : CodeActivity

{

 

protected override void Execute(CodeActivityContext context)

{

string v = s.Get(context);

s.Set(context, "wxd:" + v);

 

}

 

public System.Activities.OutArgument<string> s

{ set; get; }

 

}

}

 

xaml定义方式

<p:Activity mc:Ignorable=""

x:Class="WorkflowConsoleApplication3.myActivity"

xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"

xmlns:__myActivity="clr-namespace:WorkflowConsoleApplication3;"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<x:Members>

<x:Property Name="s" Type="p:OutArgument(x:String)" />

</x:Members>

<p:WriteLine>[s]</p:WriteLine>

</p:Activity>

 

[Out参数]可在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到

class Program

{

static void Main(string[] args)

{

 

WorkflowInstance myInstance = new WorkflowInstance(new myElement());

myInstance.OnCompleted += completed;

myInstance.Run();

System.Console.Read();

 

}

static void completed(WorkflowCompletedEventArgs e)

{

System.Console.WriteLine(e.Outputs["s"].ToString());

}

 

}

 

运行时,可以启动参数的方式[Out 参数]赋值

宿主

class Program

{

static void Main(string[] args)

{

System.Collections.Generic.Dictionary<string, object> d = new Dictionary<string, object>();

 

d.Add("s", "wxwinter");

 

WorkflowInstance myInstance = new WorkflowInstance(new myElement(),d);

myInstance.OnCompleted += completed;

myInstance.Run();

 

System.Console.Read();

 

}

static void completed(WorkflowCompletedEventArgs e)

{

System.Console.WriteLine(e.Outputs["s"].ToString());

}

 

}

结果

 

设计时,不能在属性框中,[In参数]的赋值

 

[out参数]可用[Assign]赋值

[out参数]可以在流程内部被其它[表达式]引用

In/Out参数

1.[In/Out参数]是[System.Activities.InOutArgument<T>]类型的属性

代码定义方式

public class myElement : CodeActivity

{

protected override void Execute(CodeActivityContext context)

{

string v = s.Get(context);

 

s.Set(context, "wxd:" + v);

}

 

public System.Activities.InOutArgument<string> s

{ set; get; }

}

 

xoml方式

<p:Activity mc:Ignorable=""

x:Class="WorkflowConsoleApplication3.myActivity"

xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"

xmlns:__myActivity="clr-namespace:WorkflowConsoleApplication3;"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:p="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<x:Members>

<x:Property Name="s" Type="p:InOutArgument(x:String)" />

</x:Members>

<p:WriteLine>[s]</p:WriteLine>

</p:Activity>

 

2.运行时,可以启动参数的方式对[IN/Out 参数]赋值,可在实例的[OnCompleted]事件中用[WorkflowCompletedEventArgs.Outputs]得到[IN/Out 参数]值

class Program

{

static void Main(string[] args)

{

System.Collections.Generic.Dictionary<string, object> d = new System.Collections.Generic.Dictionary<string, object>();

 

d.Add("s", "wxwinter");

 

WorkflowInstance myInstance = new WorkflowInstance(new myElement(),d);

myInstance.OnCompleted += completed;

myInstance.Run();

 

System.Console.Read();

 

}

static void completed(WorkflowCompletedEventArgs e)

{

 

System.Console.WriteLine(e.Outputs["s"].ToString());

}

 

}

 

设计时,不能在属性框中,[In/Out参数]的赋值

 

[In/Out参数]可用[Assign]赋值

[In/Out参数]可以在流程内部被其它[表达式]引用

原文地址:https://www.cnblogs.com/foundation/p/1494828.html