public override Expression Bind(Object[] args, ReadOnlyCollection <ParameterExpression> parameters, LabelTarget returnLabel) { Expression testRuleValidityExpression = null; Expression getVariableValueExpression = null; doAllButFinalBinding( args, (BindingHandle handle) => { testRuleValidityExpression = Expression.Constant(true); var handleConstant = Expression.Constant(handle); getVariableValueExpression = handle.IsDirect ? Expression.Field(handleConstant, TypeGuru.directBindingHandleType, "value") : Expression.Property(handleConstant, "Value"); }); return(Expression .IfThen( testRuleValidityExpression, Expression.Return(returnLabel, getVariableValueExpression))); }
public override Expression Bind(Object[] args, ReadOnlyCollection <ParameterExpression> parameters, LabelTarget returnLabel) { Expression testRuleValidityExpression = null; Expression setVariableValueExpression = null; ParameterExpression value = parameters[1]; doAllButFinalBinding( args, (BindingHandle handle) => { testRuleValidityExpression = Expression.Constant(true); setVariableValueExpression = Expression.Assign( Expression.Property(Expression.Constant(handle), "Value"), value); }); return(Expression .IfThen( testRuleValidityExpression, Expression.Return(returnLabel, setVariableValueExpression))); }