2012-06-07 31 views
0

我正在工作流基础项目中工作,我发现一个问题。我解释我的项目:从cs中设置InArgument值

  • 我有一个MainWindow,我设置了我想要运行的workflowname。当我运行这个工作流时,我调用VisualTracking.cs类来查看调试的位置。这个cs类的构造函数具有以下方法(WorkflowDesigner wd,string filePath,字符串名称) 该名称是我在mainwindow中设置的workflowname。

  • 我有一个dll项目,有一些自定义活动,我在以前的重新主办的工作流中使用。在其中一个活动中,我有一个叫做textValue的参数。我想,这InArgument得到workflowname值,所以做它,我做了下面的代码:

主窗口:

...... 
    VisualTracking tracker = new VisualTracking(wd, workflowFilePathName, this.workflowName); 
    ..... 

VisualTracking类:

....... 
    private string workflowName { get; set; } 
    ....... 
    public VisualTracking(WorkflowDesigner wd,string filePath,string name) { 
    ....... 
    foreach (Activity v in idActivityMap.Values) 
     { 
      string val = v.GetType().FullName; 
      activityLists.Add(val); 
      if (v.GetType().FullName == "RulesDll.Status_Activity.StatusActivity") 
      { 
       ((StatusActivity)v).textValue = this.workflowName;     
      } 
     } 
    ........ 

在此的foreach对于每个工作流活动,我检查他的名称空间是否是我想要设置workflowname的目标活动。

StatusActivity

........ 
    public InArgument<string> textValue; 

    public InArgument<string> Text 
    { 
     get { return this.textValue; } 
     set { this.textValue = value; } 
    } 
    ........ 
    protected override void Execute(CodeActivityContext context) 
    { 
     ........... 
     string text = context.GetValue(this.Text); 
     ........... 

所以我想在字符串文本有我在visualtracking类相关的workflowName值....但是当我调试,始终检索的值作为空....

任何解决方案将不胜感激!!!!!

回答

0

workflowName什么时候设置在您的VisualTracking类中?在我看来,当您从您的MainWindow创建实例时,您正在传递所需的值,但您从未实际设置过它。我猜你实际上是想使用传递给MainWnidow的参数name的值。我会建议你更换下面的代码行:

if (v.GetType().FullName == "RulesDll.Status_Activity.StatusActivity") 
{ 
    ((StatusActivity)v).textValue = this.workflowName; 
} 

这些:

// This will also catch cases where your class inherits 
// from StatusActivity. 
StatusActivity activity = v as StatusActivity; 

// Using 'as' cast will return null if the type cannot be 
// cast to a StatusActivity. 
if (activity != null) 
{ 
    // You passed in a reference to MainWindow's "this.workflowName" 
    // in the name parameter of this constructor. 
    activity.textValue = name; 
} 
+0

对不起,我忘了把this.workflowName =名称;在visualTracking类;-),但仍然没有奏效 –