AutoLazy.Fody.ILUtil.EmitTryFinally C# (CSharp) Метод

EmitTryFinally() публичный статический Метод

public static EmitTryFinally ( this il, System.Action tryBlock, System.Action finallyBlock ) : void
il this
tryBlock System.Action
finallyBlock System.Action
Результат void
        public static void EmitTryFinally(this ILProcessor il, Action tryBlock, Action finallyBlock)
        {
            var end = il.Create(OpCodes.Nop);
            var middle = il.Create(OpCodes.Nop);
            var handler = new ExceptionHandler(ExceptionHandlerType.Finally)
            {
                TryStart = il.Create(OpCodes.Nop),
                TryEnd = middle,
                HandlerStart = middle,
                HandlerEnd = end,
            };
            il.Append(handler.TryStart);
            tryBlock();
            il.Emit(OpCodes.Leave, end);
            il.Append(middle);
            finallyBlock();
            il.Emit(OpCodes.Endfinally);
            il.Append(end);
            il.Body.ExceptionHandlers.Add(handler);
        }