从本机活动中获取工作流活动

时间:2014-09-18 22:37:08

标签: workflow workflow-foundation-4

我有一个名为" BaseActivity"的基类。源自NativeActivity。我希望在基类中拥有所有常见行为,并在衍生类中使用它们。让我们说我在基类中有共同的输入/输出参数。我的派生类有自己的输入/输出参数。我的问题是,如何将我的dervied类中的out参数传递给基类,以便基类out参数将消息传递回客户端?

BASEACTIVITY CLASS

public class BaseActivity:NativeActivity     {         #region" Public Argument List"         //定义string类型的活动输入/输出参数         public InArgument FirstArgument {get;组; }         public InArgument SecondArgument {get;组; }         public OutArgument Result {get;组; }

public virtual NativeActivityContext PushContext(NativeActivityContext context,Dictionary DictBase)         {             回归背景;         }

protected override void CacheMetadata(NativeActivityMetadata metadata)         {             base.CacheMetadata(元数据);

    }

protected override void Execute(NativeActivityContext context)         {

        // Read context variables to local string variables.

        string firstVal= context.GetValue(this.FirstArgument);
        string secondVal= context.GetValue(this.SecondArgument);

        string OutputResult = context.GetValue(this.Result);


        Dictionary<string, object> contextdictionary = new Dictionary<string, object>();
        contextdictionary.Add("first", firstVal);
        contextdictionary.Add("second", secondVal);

        contextdictionary.Add("output", OutputResult);




         NativeActivityContext finalContext = PushContext(context, contextdictionary);




    }

}

派生类

public class Child:BaseActivity     {         public InArgument XsltPath {get;组; }         public OutArgument OutValue {get;组; }

public override NativeActivityContext PushContext(NativeActivityContext context,Dictionary DictBase)         {             //一些String操作然后传递它。                 OutValue.Set(context,outputStringBuilder.ToString());

        }



        return context;
    }

}

问题是我如何将OutValue传递给基本活动输出参数。子活动中的值是正确的,但是当我调用工作时,它返回一个空字符串。 PL。帮我。在此先感谢。

1 个答案:

答案 0 :(得分:0)

您是否尝试将派生的参数转发给基类?

public InArgument<string> XsltPath 
{ 
    get { return base.FirstArgument; } 
    set { base.FirstArgument = value; }
}
public OutArgument<string> OutValue
{
    get { return base.SecondArgument; } 
    set { base.SecondArgument = value; }
}