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()); }
public ReflectionGetPropertyRunner() { _valueProperty = ExtensionsToExpression.GetMemberPropertyInfo <MyClass, int>(x => x.Value); _textProperty = ExtensionsToExpression.GetMemberPropertyInfo <MyClass, string>(x => x.Text); }