大家好!
我使用Mono.Cecil复制一个方法,并且遇到以下问题:
我的复制功能很简单(例如)
public static bool Ping()
{
MessageBox.Show("Ping");
try
{
MessageBox.Show("status");
}
catch (Exception exception)
{
MessageBox.Show("Exception ");
return false;
}
return true;
}
这没问题。但是如果我这样做:
MessageBox.Show("Exception " + exception.Message);
我很麻烦:当执行到达函数调用时,它会生成“未处理的异常”,clr完成工作。我什至看不到MessageBox.Show("Ping")
!
我复制try / catch块,这样:
foreach (ExceptionHandler exh in SourceMethod.Body.ExceptionHandlers)
{
var ex = new ExceptionHandler(exh.HandlerType)
{
TryStart = exh.TryStart,
TryEnd = exh.TryEnd,
HandlerStart = exh.TryEnd,
HandlerEnd = exh.HandlerEnd,
CatchType = Assembly.MainModule.Import(typeof(Exception)),
HandlerType = exh.HandlerType,
FilterStart = exh.FilterStart
};
target.Body.ExceptionHandlers.Add(ex);
}
我认为我的问题在这里:
CatchType = Assembly.MainModule.Import(typeof(Exception)),
但是我不知道如何正确地做到这一点
我尝试过:
CatchType = exh.CatchType
但不幸的是。
如何解决这种情况?有什么想法吗?