Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WF C VS2012-用户代码未处理InvalidCast异常?_C#_Visual Studio 2012_Workflow Foundation - Fatal编程技术网

C# WF C VS2012-用户代码未处理InvalidCast异常?

C# WF C VS2012-用户代码未处理InvalidCast异常?,c#,visual-studio-2012,workflow-foundation,C#,Visual Studio 2012,Workflow Foundation,我正在尝试一本有关Windows工作流的书中的一个示例,但遇到了一个错误: 用户代码未处理InvalidCast异常 无法将“System.DBNull”类型的对象强制转换为“System.String”类型 导致错误的确切代码是: try { // Send data to workflow! IDictionary<string, object> outputArgs = WorkflowI

我正在尝试一本有关Windows工作流的书中的一个示例,但遇到了一个错误:

用户代码未处理InvalidCast异常

无法将“System.DBNull”类型的对象强制转换为“System.String”类型

导致错误的确切代码是:

 try
        {
            // Send data to workflow!
            IDictionary<string, object> outputArgs =
            WorkflowInvoker.Invoke(new CheckInventory(), wfArgs);

            // Print out the output message.
            Console.WriteLine(outputArgs["FormattedResponse"]);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

程序将运行,回答用户的两个问题:汽车的颜色和品牌,然后抛出这个错误。有什么想法吗

我想问题出在线路上

Console.WriteLine(outputArgs["FormattedResponse"]);
似乎您正试图将outputArgs[FormattedResponse]转换为字符串,以便将其写入控制台,但其计算结果为DBNull,即输出参数中没有此类输出消息。因此,请检查outputArgs[FormattedResponse]!=DBNull.Value,然后再打印:

    var outputResponse = outputArgs["FormattedResponse"];
    if(outputResponse != DBNull.Value) 
        Console.WriteLine(outputResponse);

否,其突出显示:WorkflowInvoker.InvokeNewCheckInventory,wfArgs;它突出显示WorkflowInvoker.Invokenew CheckInventory,wfArgs;在这种情况下,CheckInventory部分的亮度更高,尽管我不确定这是否是同一个问题,但它看起来像一个问题。您可以尝试上述替代解决方案。