5

私は遊んでいるクライアント/サーバーパッケージを持っています.Exception.Dataを使用してカスタム情報を別のクラス(ExceptionError)に渡してMessageBoxに渡そうとしています。

実際にサーバーを起動して接続をリッスンせずにサーバーに接続しようとすると、次のキャッチプロセスが発生します。その部分の単なる見落としです。接続をリッスンすることは実際の問題ではありませんが、Exception.Dataの問題を示しています。

catch (Exception e)
{
    e.Data["SourceFile"] = "Client.cs";
    e.Data["MethodName"] = "Send_CommandToServer";
    e.Data["ExceptionType"] = "Exception";
    object[] exceptionArgs = new object[8] { null, e.InnerException, 
                              e.Message, null, e.Source, e.StackTrace, 
                              e.TargetSite, e.Data };
    ExceptionError.Show(exceptionArgs);
}

InvalidCastException をスローしている ExceptionError クラスの行を次に示します。

Dictionary<string,string> data = (Dictionary<string, string>)exceptionArgs[7];
 // exceptionArgs[7] is Exception.Data

これが私が受け取っている実際のエラーです:

タイプ 'System.Collections.ListDictionaryInternal' のオブジェクトをタイプ 'System.Collections.Generic.Dictionary`2[System.String,System.String]' にキャストできません。

ListDictionaryInternal については何も見つかりません。私が行ったほとんどの Google 検索は、独自の問題を引き起こす System.Collections.Specialized.ListDictionary を指しています。ListDictionaryInternal について何か知っている人はいますか? e.Data を ExceptionError クラスに渡すのを手伝ってくれませんか?

4

2 に答える 2