c# – 为什么’dynamic’ExpandoObject会引发RuntimeBinderExcep
使用以下示例代码:(VS 2013,更新3)
dynamic demo = new ExpandoObject(); demo.Test = 10; var j = demo.Test; // throws exception 当调试此代码和“异常时断开:”在VS中检查“Thrown”,然后尝试访问现有属性“Test”将抛出一个RuntimeBinderException:
注意:步骤到下一行,变量j被正确设置为10. Q1:为什么抛出异常,当Test属性明确存在并保存由事实变量j证明的值10成功设置此值时?当我尝试使用一个非常现有的属性名称(如Test2)时,完全相同的异常发生,区别在于代码真的跳出了一个非处理异常的块… 抛出一个完全错误和误导的异常,然后在内部处理它是没有意义的,除了它使VS’Break当一个例外是:’Thrown’选项功能几乎不能用于代码什么使用动态对象. Q2:是的,我知道这个问题可以通过取消选中“异常时断开:”抛出“选项来隐藏. 错过了我的东西? 提前致谢. *编辑* Damir在回答中问道:“为什么在VS选项中禁用启用我的代码?”那么这里是答案…我被bug了几天,并经历过,尽管我明确地检查“我的代码”选项,它以某种方式在VS关闭/启动会话之间不会持续.最后我发现为什么… 解决方法
为什么在VS选项中禁用启用我的代码?
现在,您将在“例外”对话框中获得一个额外的选项,只会破坏您在代码中未处理的异常: 如果您像这样配置VS,那么当抛出这些内部处理的异常时,调试器不会再破坏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |