2

这个简单的代码失败并出现以下错误:

处理工作流树时遇到以下错误:

“ArgumentValue”:在拥有这些私有子项的活动中找不到名为“Parameter”的参数。ArgumentReference 和 ArgumentValue 只能在 Activity 定义的主体中使用。

我还尝试了 VisualBasivValue("Parameter") 而不是 ArgumentValue,错误是:

处理工作流树时遇到以下错误:

'VisualBasicValue':编译器错误遇到处理表达式“参数”。未声明“参数”。由于其保护级别,它可能无法访问。

如何正确地做到这一点?

我试图在 Xaml 中构建类似的东西,它可以工作,这里是代码:

<Assign sap:VirtualizedContainerService.HintSize="242,58">
    <Assign.To>
        <OutArgument x:TypeArguments="x:String">[variable]</OutArgument>
    </Assign.To>
    <Assign.Value>
        <InArgument x:TypeArguments="x:String">[Parameter]</InArgument>
    </Assign.Value>
</Assign>

看起来它以某种方式引用了参数,但是如何...

我怎样才能在代码中做到这一点?这是我的简单场景:

public class RootActivity : NativeActivity
{
    public InArgument<string> Parameter { get; set; }

    public Activity Activity { get; set; }

    public RootActivity()
    {
        var variable = new Variable<string>("V1", "This is my variable!");
        var activity = new Sequence
            {
                Variables = {variable},
                Activities =
                {
                    new Assign<string>
                    {
                        To = new OutArgument<string>(variable),
                        Value = new InArgument<string>(
                            new ArgumentValue<string>("Parameter"));
                    },
                }
            };

        this.Activity = activity;
    }

    protected override void Execute(NativeActivityContext context)
    {
        context.ScheduleActivity(this.Activity);
    }
}

非常感谢您的帮助!

4

3 回答 3

1

您在 To 和 Value 中设置的表达式实际上是 VisualBasicReference 和 VisualBasicValue。您的 XAML 的等效代码是:

new Assign<string>
        {
            To = new VisualBasicReference<string>("V1"),
            Value = new VisualBasicValue<string>("Parameter")
        };
于 2012-08-24T15:18:11.540 回答
0

我不太确定,但我注意到了一件事。

我发现尝试在构造函数中配置活动通常不起作用。建议在IActivityTemplateFactory的 Create 方法中执行此操作。

更改代码以实现此方法,然后将代码从构造函数移至 Create 方法。这可能不是您的全部问题,但可能是其中之一。

于 2010-07-25T19:14:52.683 回答
0

尝试这个:

new Assign<string>
{
    To = new OutArgument<string>(variable),
    Value = new InArgument<string>(
        env => Parameter.Get(env));
},
于 2011-03-26T03:04:37.083 回答