private static bool TargetMemberRecursesWithin(QualifiedMember parentMember, Member member) { var nonSimpleChildMembers = GlobalContext.Instance .MemberFinder .GetTargetMembers(parentMember.Type) .Where(m => !m.IsSimple) .ToArray(); if (nonSimpleChildMembers.Contains(member)) { var childMember = parentMember.Append(member); return(childMember.IsRecursive); } return(nonSimpleChildMembers.Any(m => TargetMemberRecursesWithin(parentMember.Append(m), member))); }
private static QualifiedMember GetNonEnumerableChildMember(QualifiedMember parentMember, Member childMember) { var qualifiedChildMember = parentMember.Append(childMember); if (qualifiedChildMember.IsEnumerable) { qualifiedChildMember = qualifiedChildMember.GetElementMember(); } return(qualifiedChildMember); }
public static QualifiedMember GetElementMember(this QualifiedMember enumerableMember) => enumerableMember.Append(GetElementMember(enumerableMember.Type));