System.Dynamic.DynamicMetaObjectBinder.Bind C# (CSharp) Method

Bind() public abstract method

When overridden in the derived class, performs the binding of the dynamic operation.
public abstract Bind ( DynamicMetaObject target, DynamicMetaObject args ) : DynamicMetaObject
target DynamicMetaObject The target of the dynamic operation.
args DynamicMetaObject An array of arguments of the dynamic operation.
return DynamicMetaObject
        public abstract DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args);

Same methods

DynamicMetaObjectBinder::Bind ( object args, ReadOnlyCollection parameters, LabelTarget returnLabel ) : Expression

Usage Example

Esempio n. 1
0
        private static Expression ApplyBinder(DynamicMetaObjectBinder binder, bool throwException, params Expression[] expressions)
        {
            var result = binder.Bind(DynamicMetaObject.Create(null, expressions[0]),
                expressions.Skip(1).Select(e =>
                    DynamicMetaObject.Create(null, e)).ToArray()
            );

            if (result.Expression.NodeType == ExpressionType.Convert)
            {
                var convert = (UnaryExpression)result.Expression;
                return convert.Operand;
            }
            if (result.Expression.NodeType == ExpressionType.Throw)
            {
                if (throwException)
                {
                    // throw the exception
                    Expression.Lambda(result.Expression).Compile().DynamicInvoke();
                }
                else return null;
            }
            return result.Expression;
        }