C# 从cs中设置不一致值 我在一个工作流基础项目中工作,我发现了一个问题。我解释我的项目:

C# 从cs中设置不一致值 我在一个工作流基础项目中工作,我发现了一个问题。我解释我的项目:,c#,visual-studio-2010,workflow-foundation-4,C#,Visual Studio 2010,Workflow Foundation 4,我有一个主窗口,在其中设置要运行的workflowname。运行此工作流时,我调用VisualTracking.cs类以查看调试的位置。此cs类构造函数具有以下方法(WorkflowDesigner wd、字符串文件路径、字符串名称) 名称是我在主窗口中设置的workflowname 我有一个带有一些自定义活动的dll项目,这些活动是我在以前重新托管的工作流中使用的。在其中一个活动中,我有一个不确定的问题,那就是调用textValue。我希望此InArgument获得workflowname值,

我有一个主窗口,在其中设置要运行的workflowname。运行此工作流时,我调用VisualTracking.cs类以查看调试的位置。此cs类构造函数具有以下方法(WorkflowDesigner wd、字符串文件路径、字符串名称) 名称是我在主窗口中设置的workflowname

  • 我有一个带有一些自定义活动的dll项目,这些活动是我在以前重新托管的工作流中使用的。在其中一个活动中,我有一个不确定的问题,那就是调用textValue。我希望此InArgument获得workflowname值,因此为此,我执行以下代码:

  • 主窗口:

        ......
        VisualTracking tracker = new VisualTracking(wd, workflowFilePathName, this.workflowName);
        .....
    
    可视化跟踪类:

        .......
        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的目标活动

    状态活动

        ........
        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);
           ...........
    
    。。。。。。。。
    公共不公平价值观;
    公开非公开文本
    {
    获取{返回this.textValue;}
    设置{this.textValue=value;}
    }
    ........
    受保护的覆盖无效执行(CodeActivityContext上下文)
    {
    ...........
    string text=context.GetValue(this.text);
    ...........
    
    所以我希望字符串文本中有我在visualtracking类中关联的workflowName值…但是当我调试时,总是检索一个空值


    >在VisualTraceTracle类中,<代码> > WorkFrutOns<代码>设置时,任何解决方案都会被赏识,

    < p> >在我看来,当您从主窗口创建实例时,您正在传递所需的值,但实际上从未设置它。来自MainWnidow的ameter。我建议您替换以下代码行:

    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;
    }
    

    很抱歉,我忘记将此.workflowName=name;放在visualTracking类中;-),但仍然不起作用