public static bool IsRepeatMapping(this IQualifiedMemberContext context)
        {
            if (context.IsRoot || (context.TargetMember.Depth == 2))
            {
                return(false);
            }

            if (context.TargetMember.IsRecursion)
            {
                return(true);
            }

            if ((context.TargetMember.Depth == 3) && context.TargetMemberIsEnumerableElement())
            {
                return(false);
            }

            if (TargetMemberHasRecursiveObjectGraph(context.TargetMember) == false)
            {
                return(false);
            }

            // The target member we're mapping right now isn't recursive, but it has recursion
            // within its child members, and its mapping might be repeated elsewhere within the
            // mapping graph. We therefore check if this member ever repeats; if so we'll map it
            // by calling MapRepeated, and it'll be the entry point of the RepeatedMapperFunc
            // which performs the repeated mapping:
            var rootMember = context.GetRootMapperData().TargetMember;

            return(TargetMemberEverRepeatsWithin(rootMember, context.TargetMember));
        }
        private static bool DoNotApplyFilter(
            IQualifiedMember sourceMember,
            IDataSource dataSource,
            IQualifiedMemberContext context)
        {
            if (!dataSource.IsValid)
            {
                return(true);
            }

            // Non-simple enumerable elements will be filtered out elsewhere,
            // unless they're being runtime-typed:
            return(!sourceMember.IsSimple && !context.IsEntryPoint &&
                   context.TargetMemberIsEnumerableElement());
        }
 public bool AppliesTo(IQualifiedMemberContext context)
 => !context.TargetMemberIsEnumerableElement();
 public override bool AppliesTo(IQualifiedMemberContext context)
 => !context.TargetMemberIsEnumerableElement() && base.AppliesTo(context);