1

我有一个关于 Windows Workflow Foundation 4 的问题。我有一个名为 PositionArrayActivity 的活动。这个活动里面有一个序列活动。我需要在 Execute 方法中(在工作流执行期间)将他的值映射到在 Create 方法中创建的 PORTFOLIO_NAME 的 oneFund 变量....在运行时将 oneFund 值映射到 PORTFOLIO_NAME 我该怎么做?

谢谢

public sealed class PositionArrayActivity : NativeActivity, IActivityTemplateFactory
{
    [Browsable(false)]
    public Dictionary<string, List<Entity>> dictionary = new Dictionary<string, List<Entity>>();
    public ActivityAction<Entity[]> Body { get; set; }
    public Entity[] PositionList { get; set; }
    public SqlDataReader rdr;
    public SqlDataReader sdr;
    public Entity[] positionArray;
    public List<String> fundList;
    public String oneFund { get; set; }
    public String date { get; set; }
    public List<Entity> listToArrayPositions;

    protected override void CacheMetadata(NativeActivityMetadata metadata)
    {
        metadata.AddDelegate(Body);
    }

    protected override void Execute(NativeActivityContext context)
    {
       // A lot of code.... 
    }


    public Activity Create(DependencyObject target)
    {
        Variable<string> var = new Variable<string>
        {
            Name = "PORTFOLIO_NAME"
        };

        var fef = new PositionArrayActivity();  
        var aa = new ActivityAction<Entity[]>();
        var da = new DelegateInArgument<Entity[]>();
        da.Name = "positions";
        fef.Body = aa;
        aa.Argument = da;
        aa.Handler = new Sequence
        {
            Variables = { var }
        };

        return fef;
    }
}
4

1 回答 1

1

您需要一个 ActivityContext 来设置变量值,因此首先将 var 的声明(该名称是否实际编译?)移动到更高的范围。

然后在 Execute var.Set(activityContext, oneFund);

不过有一件事,oneFund 属性只会在应用程序启动时设置一次,因此您可能会得到一些令人惊讶的结果。如果您希望每个实例都这样,您需要一个论据。

于 2013-01-13T15:09:36.503 回答