1

假设我创建了一个简单的工作流,其中包含两个变量resulttypeBooleanmyInttype Integer。现在添加一个活动“分配”,放置result在结果框中,并Integer.TryParse("22", myInt)在右手表达式中。运行此活动后,变量仍然具有值0

为什么TryParse调用的结果没有正确存储在变量中?(这里也不会产生错误)

4

2 回答 2

2

WF 不是这样工作的。变量没有输入/输出的概念作为参数。它们没有实现隐式运算符,因此结果永远不会按您的意愿存储。

您可以实现自己的 TryParse 活动,也可以像这样使用InvokeMethod

var resultVar = new Variable<bool>("result");
var myIntVar = new Variable<int>("myInt");

var activity = new Sequence
{
    Variables = 
    {
        resultVar,
        myIntVar
    },
    Activities =
    {
        new InvokeMethod
        {
            TargetType = typeof(int),
            MethodName = "TryParse",
            Result = new OutArgument<bool>(resultVar),
            Parameters = 
            {
                new InArgument<string>("22"),
                new OutArgument<int>(myIntVar)
            }
        },
        new WriteLine
        {
            Text = new VisualBasicValue<string>(@"""INT: "" & myInt")
        }
    }
};
于 2012-09-26T13:48:13.647 回答
1

如果您查看 obj/x86/Debug 或项目中的临时文件所在的位置,您会发现一些可以满足您好奇心的中间 .cs 文件。我试过了,你得到了一个带有私有 int myInt 和私有 bool 结果的类以及一个使用这些变量的 tryparse 语句。因此没有爆炸,尽管我确实在输出窗口中看到了一些问题!

于 2012-09-26T23:56:55.303 回答