C# WF C VS2012-用户代码未处理InvalidCast异常?
我正在尝试一本有关Windows工作流的书中的一个示例,但遇到了一个错误: 用户代码未处理InvalidCast异常 无法将“System.DBNull”类型的对象强制转换为“System.String”类型 导致错误的确切代码是: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
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部分的亮度更高,尽管我不确定这是否是同一个问题,但它看起来像一个问题。您可以尝试上述替代解决方案。