GenericInvokeMember() static private method

Transforms an invoke member into a Python GetMember/Invoke. The caller should verify that the given attribute is not resolved against a normal .NET class before calling this. If it is a normal .NET member then a fallback InvokeMember is preferred.
static private GenericInvokeMember ( InvokeMemberBinder action, ValidationInfo valInfo, DynamicMetaObject target, DynamicMetaObject args ) : DynamicMetaObject
action System.Dynamic.InvokeMemberBinder
valInfo ValidationInfo
target System.Dynamic.DynamicMetaObject
args System.Dynamic.DynamicMetaObject
return System.Dynamic.DynamicMetaObject
        public override DynamicMetaObject /*!*/ BindInvokeMember(InvokeMemberBinder /*!*/ action, DynamicMetaObject /*!*/[] /*!*/ args)
        {
            foreach (PythonType pt in Value.ResolutionOrder)
            {
                if (pt.IsSystemType)
                {
                    return(action.FallbackInvokeMember(this, args));
                }
                else if (pt.TryResolveSlot(DefaultContext.DefaultCLS, action.Name, out _))
                {
                    break;
                }
            }

            return(BindingHelpers.GenericInvokeMember(action, null, this, args));
        }
 public override DynamicMetaObject /*!*/ BindInvokeMember(InvokeMemberBinder /*!*/ action, DynamicMetaObject /*!*/[] /*!*/ args)
 {
     return(BindingHelpers.GenericInvokeMember(action, null, this, args));
 }