只有具備[Variables]屬性的Activity才可以定義變數
[Variables] 的資料類型為System.Collections.ObjectModel.Collection<System.Activities.Variable>
變數添加
在WF設計器中添加
變數存放在所在[Activity]的內部,
<p:Activity mc:Ignorable=""
x:Class="WorkflowConsoleApplication3.Sequence1"
xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities/design"
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:w="clr-namespace:WorkflowConsoleApplication3;assembly=WorkflowConsoleApplication3"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<p:Sequence >
<w:myElement>
<w:myElement.Variables>
<p:Variable x:TypeArguments="x:String" Default="["i am wxd"]" Name="wxd" />
</w:myElement.Variables>
</w:myElement>
</p:Activity> |
在定義變數的[Activity]內部的[Activity]可以訪問變數,在定義變數的[Activity]外部的[Activity]無法訪問變數
無法通過啟動傳參方式為[變數]賦值.無法在流程完成事件中接收[變數]的值
定義具有[Variables]屬性的Activity
自訂Activity |
public class myNative :NativeActivity
{
private Collection<Variable> variables;
private Variable<int> lastIndexHint;
public myNative()
{
this.variables = new WorkflowElement.DesignTimeAwareCollection<Variable>(this);
this.lastIndexHint = new Variable<int> { Modifiers = VariableModifiers.SuppressTracking };
}
protected override void OnGetEnvironmentVariables(IList<Variable> variables)
{
for (int i = 0; i < this.Variables.Count; i++)
{
variables.Add(this.Variables[i]);
}
}
protected override void OnGetPrivateVariables(IList<Variable> variables)
{
variables.Add(this.lastIndexHint);
}
public Collection<Variable> Variables
{
get
{
return this.variables;
}
}
protected override void Execute(ActivityExecutionContext context)
{
foreach (var v in variables)
{
System.Console.WriteLine("{0}:{1}",v.Name,v.Get(context));
}
}
} |
流程 |
|
宿主 |
WorkflowInstance myInstance = new WorkflowInstance(new Sequence1());
myInstance.Run();
System.Console.Read();
|
結果 |
|