8

在我的程序中,我创建了动态 lambda 表达式,然后将它们编译为委托。然后调用这些委托以从我的实体中提取信息。一些代表可能会抛出异常,我已经捕获了我调用代表的异常。我已启用“仅启用我的代码”并将 [DebuggerNonUserCode] 属性应用于 LambdaExpression 的创建位置、编译位置和调用位置。但是因为在Debug>Exceptions>Common Language Runtime Exceptions中勾选了Thrown复选框,Visual Studio总是在出现错误时停止,这给开发者带来了很大的不便。

似乎 [DebuggerNonUserCode] 应该以某种方式应用于已编译的委托,但如何?或者有什么其他建议?

谢谢。

4

1 回答 1

1

据我所知,你不能将属性应用于使用表达式生成的匿名方法,除了动态类型生成可能会有一些可怕的混乱。

但是,一个可能的建议是转到异常菜单Debug > Exceptions并选择您要专门中断的异常。如果您的表达式倾向于抛出特定类型的异常,您可以禁用对这些异常的中断。

于 2012-06-25T08:21:44.943 回答