Example #1
0
        static Expression <Filter <RoutingContext <T> > > GetRoutingContextFilter(Expression <Filter <T> > filterExpression)
        {
            ParameterExpression context = Expression.Parameter(typeof(RoutingContext <T>), "value");

            PropertyInfo bodyProperty =
                ExtensionsToExpression.GetMemberPropertyInfo <RoutingContext <T>, T>(x => x.Body);

            MethodCallExpression body = Expression.Call(context, bodyProperty.GetGetMethod(true));

            InvocationExpression invokeFilter = Expression.Invoke(filterExpression, body);

            return(Expression.Lambda <Filter <RoutingContext <T> > >(invokeFilter, context));
        }
        static Func <object, T> GenerateConvertMethod()
        {
            ParameterExpression value = Expression.Parameter(typeof(object), "value");

            UnaryExpression castValue = Expression.TypeAs(value, typeof(Message <T>));

            PropertyInfo propertyInfo = ExtensionsToExpression.GetMemberPropertyInfo <Message <T>, T>(x => x.Body);

            MethodCallExpression getProperty = Expression.Call(castValue, propertyInfo.GetGetMethod(true));

            Expression <Func <object, T> > expression = Expression.Lambda <Func <object, T> >(getProperty, value);

            return(expression.Compile());
        }
Example #3
0
 public ReflectionGetPropertyRunner()
 {
     _valueProperty = ExtensionsToExpression.GetMemberPropertyInfo <MyClass, int>(x => x.Value);
     _textProperty  = ExtensionsToExpression.GetMemberPropertyInfo <MyClass, string>(x => x.Text);
 }