将wf4 xamlized <assign>转换为c#</assign>

时间:2012-07-01 07:38:38

标签: xaml workflow-foundation-4

我无法在C#中重新编写下面提到的XAML。

<Activity 
  xmlns:swm="clr-namespace:System.Web.Mvc;assembly=System.Web.Mvc" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
  <x:Members>
    <x:Property 
      Name="ViewData" 
      Type="InArgument(swm:ViewDataDictionary)" />
  </x:Members>
  <Assign>
    <Assign.To>
      <OutArgument x:TypeArguments="x:Object">[ViewData("Foo")]</OutArgument>
    </Assign.To>
    <Assign.Value>
      <InArgument x:TypeArguments="x:Object">["funky foo string"]</InArgument>
    </Assign.Value>
  </Assign>
</Activity>

有人能说清楚这个吗?

1 个答案:

答案 0 :(得分:0)

  var dic = new Dictionary<string, object>();
  dic.Add("foo", "before");
  var activity = new Assign {
    To = new OutArgument<object>(_ => dic["foo"]),
    Value = new InArgument<object>( _ => (object)"after")
  };

  WorkflowInvoker.Invoke(activity);

您必须使用接受表达式的In / Out参数重载。另外,我必须明确地将“after”转换为object,否则工作流验证会抱怨不匹配的类型。