public Expression <BindingDelegate> CompileToDelegate( CastedExpressionBindingProperty expression, DataContextStack dataContext) { var expr = BindingCompiler.ReplaceParameters(expression.Expression, dataContext); expr = new ExpressionNullPropagationVisitor(e => true).Visit(expr); expr = ExpressionUtils.ConvertToObject(expr); return(Expression.Lambda <BindingDelegate>(expr, BindingCompiler.ViewModelsParameter, BindingCompiler.CurrentControlParameter)); }
public virtual Expression <CompiledBindingExpression.BindingDelegate> CompileToDelegate(Expression binding, DataContextStack dataContext, Type expectedType) { var viewModelsParameter = Expression.Parameter(typeof(object[]), "vm"); var controlRootParameter = Expression.Parameter(typeof(DotvvmBindableObject), "controlRoot"); var expr = ExpressionUtils.Replace(ConvertExpressionToType(binding, expectedType), BindingCompiler.GetParameters(dataContext, viewModelsParameter, Expression.Convert(controlRootParameter, dataContext.RootControlType))); expr = ExpressionUtils.ConvertToObject(expr); return(Expression.Lambda <CompiledBindingExpression.BindingDelegate>(expr, viewModelsParameter, controlRootParameter)); }