Доброго всем дня!
Я копирую метод с использованием 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
Но, к сожалению,
Как решить эту ситуацию? Есть идеи?