如果我调用一个非法的方法,那么调试器会在该方法的代码行停止,这会引发异常
如果我使用反射通过Invoke调用方法并且该方法抛出异常,则调试器会在通过反射调用方法的行上停止,而不是在错误方法本身中调用
如何更改此设置,并且无论调用该方法的方式如何,调试器都会在错误的代码行中停止?
代码内置在Debug
中答案 0 :(得分:3)
检查特定异常的“Thrown”框 - 调试器将在Invoke层捕获(和转换)之前停止抛出异常的位置。
答案 1 :(得分:1)
您使用的是程序集的调试版本吗? 如果没有,调试器无法找到异常的来源。
答案 2 :(得分:1)
如果您知道反射调用的方法签名。您可以创建一个委托。
如果您有班级:
public class MyClass {
private string GetSomeText() { return DateTime.Now.ToString(); }
}
你可以创建一个委托:
delegate string DlgGetSomeText();
然后使用referenco创建一个委托的实例到具体方法:
MyClass cls = new MyClass();
DlgGetSomeText dlg = (DlgGetSomeText)Delegate.CreateDelegate( cls.GetType(), cls, "GetSomeText" );
string result = dlg();
如果您将使用委托,则不会使用反射调用,因此您的问题将会出现。