Example #1
0
    private static Func <object[], object> EmitDelegateFromExpression(Expression expr)
    {
        var method = new DynamicMethod("CreateA", typeof(object), new[] { typeof(object[]) });
        var il     = method.GetILGenerator();

        var ok = EmittingVisitor.TryVisit(expr, il);

        il.Emit(OpCodes.Ret);

        return((Func <object[], object>)method.CreateDelegate(typeof(Func <object[], object>)));
    }
        static partial void CompileToDelegate(Expression expression, ref FactoryDelegate result)
        {
            var method = new DynamicMethod(string.Empty,
                                           typeof(object), _factoryDelegateArgTypes,
                                           typeof(Container).Module, skipVisibility: true);

            var il = method.GetILGenerator();

            var emitted = EmittingVisitor.TryVisit(expression, il);

            if (emitted)
            {
                il.Emit(OpCodes.Ret);
                result = (FactoryDelegate)method.CreateDelegate(typeof(FactoryDelegate));
            }
        }