私は遊んでいるクライアント/サーバーパッケージを持っています.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 クラスに渡すのを手伝ってくれませんか?