1

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

プログラムが実行され、ユーザーから車の色とメーカーの 2 つの質問を受けて、このエラーがスローされます。何か案は ?

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 に答える