Пример #1
0
        public static Func <TFrom, TTo> GetConverter_CompiledFast_LightExpression <TFrom, TTo>()
        {
            var fromParam = L.Parameter(typeof(TFrom));
            var expr      = L.Lambda <Func <TFrom, TTo> >(L.Convert(fromParam, typeof(TTo)), fromParam);

            return(LightExpression.ExpressionCompiler.CompileFast(expr, true));
        }
Пример #2
0
        private LightExpression.Expression <Func <A> > CreateLightExpression()
        {
            var test           = L.Constant(new NestedLambdasVsVars());
            var getOrAddMethod = test.Type.GetMethod(nameof(GetOrAdd));
            var d = L.Convert(
                L.Call(test, getOrAddMethod,
                       L.Constant(2),
                       L.Lambda <Func <object> >(L.New(_dCtor), typeof(object))),
                typeof(D));

            var c = L.Convert(
                L.Call(test, getOrAddMethod,
                       L.Constant(1),
                       L.Lambda <Func <object> >(L.New(_cCtor, d), typeof(object))),
                typeof(C));

            var b = L.Convert(
                L.Call(test, getOrAddMethod,
                       L.Constant(0),
                       L.Lambda <Func <object> >(L.New(_bCtor, c, d), typeof(object))),
                typeof(B));

            return(L.Lambda <Func <A> >(L.New(_aCtor, b, c), typeof(A)));
        }