System.Dynamic.DynamicObject.MetaDynamic.CallMethodWithResult C# (CSharp) Method

CallMethodWithResult() private method

Helper method for generating a MetaObject which calls a specific method on Dynamic that returns a result
private CallMethodWithResult ( string methodName, DynamicMetaObjectBinder binder, Expression args, Fallback fallback, Fallback fallbackInvoke ) : DynamicMetaObject
methodName string
binder DynamicMetaObjectBinder
args System.Linq.Expressions.Expression
fallback Fallback
fallbackInvoke Fallback
return DynamicMetaObject
            private DynamicMetaObject CallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback, Fallback fallbackInvoke) {
                //
                // First, call fallback to do default binding
                // This produces either an error or a call to a .NET member
                //
                DynamicMetaObject fallbackResult = fallback(null);

                var callDynamic = BuildCallMethodWithResult(methodName, binder, args, fallbackResult, fallbackInvoke);
                
                //
                // Now, call fallback again using our new MO as the error
                // When we do this, one of two things can happen:
                //   1. Binding will succeed, and it will ignore our call to
                //      the dynamic method, OR
                //   2. Binding will fail, and it will use the MO we created
                //      above.
                //
                return fallback(callDynamic);
            }

Same methods

DynamicObject.MetaDynamic::CallMethodWithResult ( string methodName, DynamicMetaObjectBinder binder, Expression args, Fallback fallback ) : DynamicMetaObject