使用Exception.Data的InvalidCastException字典<string,string>

道路管理员

我正在使用一个Client / Server程序包,我正在尝试使用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);
}

这是ExceptionError类中的引发InvalidCastException的行:

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类中吗?

乔恩·斯基特

基本上,of的值Exception.Data不是Dictionary<string, string>-,所以当您强制转换为时Dictionary<string, string>,会遇到此异常。

属性本身仅声明为type IDictionary您不应该假设它是Dictionary<string, string>您应该修正ExceptionError班级以避免这种假设。据记录,键通常是字符串,但是不能保证-同样,不能保证值是字符串。

您可以通过仅转换适当的条目来执行从“IDictionary”的“安全”转换Dictionary<string, string>

var dictionary = original.Cast<DictionaryEntry>()
                         .Where(de => de.Key is string && de.Value is string)
                         .ToDictionary(de => (string) de.Key,
                                       de => (string) de.Value);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用linq解析字典列表(List <Dictionary <string,string >>)

来自分类Dev

使用NSJSON将String转换为字典

来自分类Dev

使用string.at()或string []

来自分类Dev

如何使用C#比较两个字典`Dictionary <string`,int>和`Dict_Aggregate =`Dictionary <string`,string>`

来自分类Dev

如何使用键作为标题将C#中的字典<string,List <string >>转换为csv?

来自分类Dev

Linq groupby 在字典<string,string> 列表的值上使用未知数量的键或键名

来自分类Dev

Breaking on exception: String expected

来自分类Dev

使用Swifty在字典中结合JSON和String

来自分类Dev

合并<String,Any>的字典

来自分类Dev

使用字典作为属性反序列化JSON将导致空.NET字典<string,string>

来自分类Dev

Swift字典[String:String]到NSMutableDictionary?

来自分类Dev

DotLiquid-字典<string,string>作为参数

来自分类Dev

.Net Core解析字典<string,string> [FromQuery]

来自分类Dev

有没有一种方法可以使用将<string,string>添加到字典的方法?

来自分类Dev

无法使用带有嵌入列表的字典(例如 dictionary<string, list<string>> )来解决我的问题

来自分类Dev

Throw string exception from inherited exception class

来自分类Dev

字典<string,object>到DataTable

来自分类Dev

重新实现字典<string,dynamic>

来自分类Dev

字典中的string.Trim()

来自分类Dev

字典中的string.Trim()

来自分类Dev

如何使用JPA保留Map <String,Map <String,String >>?

来自分类Dev

如何确保TypeScript的string | string []是不使用as的string?

来自分类Dev

使用Java迭代Map <String,Map <String,String >>

来自分类Dev

在string列中使用string.capwords

来自分类Dev

如何使用String Tokenizer获取所需的String

来自分类Dev

无法使用(`String`,`Array <String>`)调用`++`

来自分类Dev

使用MutableLiveData <String>优于String的优势?

来自分类Dev

如何使用FragmentTransaction的函数“ addToBackStack(String string)”

来自分类Dev

使用流过滤 List<Map<String, String>>

Related 相关文章

  1. 1

    如何使用linq解析字典列表(List <Dictionary <string,string >>)

  2. 2

    使用NSJSON将String转换为字典

  3. 3

    使用string.at()或string []

  4. 4

    如何使用C#比较两个字典`Dictionary <string`,int>和`Dict_Aggregate =`Dictionary <string`,string>`

  5. 5

    如何使用键作为标题将C#中的字典<string,List <string >>转换为csv?

  6. 6

    Linq groupby 在字典<string,string> 列表的值上使用未知数量的键或键名

  7. 7

    Breaking on exception: String expected

  8. 8

    使用Swifty在字典中结合JSON和String

  9. 9

    合并<String,Any>的字典

  10. 10

    使用字典作为属性反序列化JSON将导致空.NET字典<string,string>

  11. 11

    Swift字典[String:String]到NSMutableDictionary?

  12. 12

    DotLiquid-字典<string,string>作为参数

  13. 13

    .Net Core解析字典<string,string> [FromQuery]

  14. 14

    有没有一种方法可以使用将<string,string>添加到字典的方法?

  15. 15

    无法使用带有嵌入列表的字典(例如 dictionary<string, list<string>> )来解决我的问题

  16. 16

    Throw string exception from inherited exception class

  17. 17

    字典<string,object>到DataTable

  18. 18

    重新实现字典<string,dynamic>

  19. 19

    字典中的string.Trim()

  20. 20

    字典中的string.Trim()

  21. 21

    如何使用JPA保留Map <String,Map <String,String >>?

  22. 22

    如何确保TypeScript的string | string []是不使用as的string?

  23. 23

    使用Java迭代Map <String,Map <String,String >>

  24. 24

    在string列中使用string.capwords

  25. 25

    如何使用String Tokenizer获取所需的String

  26. 26

    无法使用(`String`,`Array <String>`)调用`++`

  27. 27

    使用MutableLiveData <String>优于String的优势?

  28. 28

    如何使用FragmentTransaction的函数“ addToBackStack(String string)”

  29. 29

    使用流过滤 List<Map<String, String>>

热门标签

归档