具有OutArgument和Assign活动的自定义WF4活动

Jaa*_*aap 3 workflow-foundation workflow-foundation-4

我试图通过编写标准活动来编写自定义活动,其中一个是Assign活动,它负责为OutArgument分配一个字符串值,称为'TextOut',我在自定义Activity上定义了它.我们的想法是,使用此自定义Activity的工作流作者在工作流中定义一个变量,并将其映射到我的自定义Activity的TextOut OutArgument.我想用迭代方法实现这一点,因为我需要在运行时动态创建pick分支.我遗漏了这段代码来简化我的问题.

活动的代码如下所示.这可能不是应该如何完成的,因为它不起作用:)使用此Activity的工作流会抛出验证错误:"未提供所需活动参数'To'的值".

我想得到一些关于如何让我的OutArgument使用Assign子活动的建议(所以不要在我的OutArgument上调用.Set).

public sealed class OutArgActivity : Activity
{
    public OutArgument<string> TextOut { get; set; }

    public OutArgActivity()
    {
        Assign assign = new Assign {
            To = this.TextOut,
            Value = new InArgument<string>(
                env => "this is my custom return value")
        };

        Sequence sequence = new Sequence();
        sequence.Activities.Add(assign);

        this.Implementation = () => sequence;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mau*_*ice 8

尝试在Assign活动中使用ArgumentReference,如下所示:

public sealed class OutArgActivity : Activity
{
    public OutArgument<string> TextOut { get; set; }

    public OutArgActivity()
    {
        Assign<string> assign = new Assign<string>
        {
            To = new ArgumentReference<string>("TextOut"),
            Value = new InArgument<string>(
                env => "this is my custom return value")
        };

        Sequence sequence = new Sequence();
        sequence.Activities.Add(assign);

        this.Implementation = () => sequence;
    }
}
Run Code Online (Sandbox Code Playgroud)