使用动态对象时的RuntimeBinderException

我觉得我错过了一些明显的东西,所以请随意向我指出。

我有一个简单的unit testing来说明我的问题:

[Test] public void DynamicTest() { dynamic myDynamic = new ExpandoObject(); myDynamic.Prop = "abc"; Assert.AreEqual("abc",myDynamic.Prop); } 

当我执行unit testing时,它会通过。 到现在为止还挺好。

如果我选择调试unit testing(在调试 – > VS中的例外情况下勾选所有CLRexception),我会看到一个RuntimeBinderException:

在此处输入图像描述

它不是致命的,所以我可以击中F5继续并且测试仍然通过,但这似乎是错误的。 我在这里做错了吗? 在我们的应用程序的一般使用过程中获取这些exception非常烦人。 或者我应该解开RuntimeBinderException的框并忽略它?

您将调试器设置为在抛出 CLRexception(即第一次机会)时未中断(即第二次机会)时中断。 显然,你可以解开它并且它会消失,但是如果你只想从代码中看到第一次机会exception,那么你可以启用Just My Code选项 。 启用“只启动代码”后,如果调试器通过您的代码,调试器将仅在第一次机会exception时中断。 这些选项不会影响应用程序对用户的行为,只会影响调试程序在连接时的行为。