1

我正在尝试有关 Windows Workflow 的书中的示例,但出现错误:

用户代码未处理 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);
        }

该程序将运行,从用户那里得到两个问题:汽车的颜色和制造,然后它会抛出这个错误。有任何想法吗 ?

4

1 回答 1

1

我想问题是线路

Console.WriteLine(outputArgs["FormattedResponse"]);

似乎您正在尝试将 outputArgs["FormattedResponse"] 转换为字符串(以便将其写入控制台),但它的计算结果为 DBNull(即,输出参数中没有这样的输出消息)。因此,在打印之前检查 outputArgs["FormattedResponse"] != DBNull.Value 是否:

    var outputResponse = outputArgs["FormattedResponse"];
    if(outputResponse != DBNull.Value) 
        Console.WriteLine(outputResponse);
于 2013-09-07T16:31:41.723 回答