IronPython.Runtime.Binding.MetaPythonFunction.BindGetMemberWorker C# (CSharp) Method

BindGetMemberWorker() private method

private BindGetMemberWorker ( DynamicMetaObjectBinder binder, string name, DynamicMetaObject codeContext ) : DynamicMetaObject
binder DynamicMetaObjectBinder
name string
codeContext DynamicMetaObject
return DynamicMetaObject
        private DynamicMetaObject BindGetMemberWorker(DynamicMetaObjectBinder binder, string name, DynamicMetaObject codeContext) {
            ParameterExpression tmp = Expression.Parameter(typeof(object));

            // first get the default binder value
            DynamicMetaObject fallback = FallbackGetMember(binder, this, codeContext);

            // then fallback w/ an error suggestion that does a late bound lookup.
            return FallbackGetMember(
                binder,
                this,
                codeContext,
                new DynamicMetaObject(
                    Ast.Block(
                        new[] { tmp },
                        Ast.Condition(
                            Ast.NotEqual(
                                Ast.Assign(
                                    tmp,
                                    Ast.Call(
                                        typeof(PythonOps).GetMethod("PythonFunctionGetMember"),
                                        AstUtils.Convert(
                                            Expression,
                                            typeof(PythonFunction)
                                        ),
                                        Expression.Constant(name)
                                    )
                                ),
                                Ast.Constant(OperationFailed.Value)
                            ),
                            tmp,
                            AstUtils.Convert(fallback.Expression, typeof(object))
                        )
                    ),
                    BindingRestrictions.GetTypeRestriction(Expression, typeof(PythonFunction)).Merge(fallback.Restrictions)
                )
            );
        }