我有一个关于Windows Workflow Foundation 4的问题。我有一个名为PositionArrayActivity的活动。此活动内部有一个Sequence活动。我需要在Execute方法中(在工作流执行期间)oneFund变量将其值映射到在Create方法中创建的PORTFOLIO_NAME ....我有什么办法在运行时将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;
}
}
答案 0 :(得分:1)
您需要有一个ActivityContext来设置变量值,所以首先将var的声明(该名称实际编译?)移动到更高的范围。
然后在执行中 var.Set(activityContext,oneFund);
但有一件事,oneFund属性只会在应用程序启动时设置一次,因此您可能会有一些令人惊讶的结果。如果您希望每个实例都有,那么您需要一个参考。