Я пытаюсь создать пользовательское действие для WF4, в котором размещается дочернее действие и передаю некоторые аргументы его дочернему действию. Ниже я прикрепляю упрощенную версию моей деятельности (Родитель и Ребенок)
public class Child : CodeActivity
{
public InArgument<Dictionary<string, object>> Data;
protected override void Execute(CodeActivityContext context)
{
Dictionary<string, object> data = Data.Get(context);
//Some operations on the input data
}
}
public class Parent : NativeActivity
{
public InArgument<int> Value1 { get; set; }
public InArgument<string> Value2 { get; set; }
public Child Body { get; set; }
protected override void Execute(NativeActivityContext context)
{
int value1 = Value1.Get(context);
string value2 = Value2.Get(context);
Dictionary<string, object> data = new Dictionary<string, object>();
data.Add("value1", value1);
data.Add("value2", value2);
context.SetValue(Body.Data, data);
context.ScheduleActivity(this.Body);
}
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
Body = new Child();
base.CacheMetadata(metadata);
}
}
Аргумент Data из действия Child имеет значение null, когда выполнение рабочего процесса достигает метода Execute для действия.
Может кто-нибудь, пожалуйста, дайте мне какое-то направление, как можно передать аргументы между этими двумя действиями?