public static SourceMemberMatch GetMatchFor(SourceMemberMatchContext context) { if (context.ParentSourceMember.IsSimple) { return(SourceMemberMatch.Null); } if (ExactMemberMatchExists(context)) { return(context.CreateSourceMemberMatch()); } if (TryFindSourceMemberMatch(context) || TryFindParentContextSourceMemberMatch(context)) { return(context.SourceMemberMatch); } return((context.MatchingSourceMember != null) ? context.CreateSourceMemberMatch(isUseable: false) : SourceMemberMatch.Null); }
private static bool TryFindSourceMemberMatch(SourceMemberMatchContext context) { var candidateSourceMembers = EnumerateSourceMembers(context) .Filter(context.TargetMember.Matches); foreach (var sourceMember in candidateSourceMembers) { if (TypesAreCompatible(sourceMember.Type, context.MemberMapperData)) { context.SourceMemberMatch = context.CreateSourceMemberMatch(sourceMember); return(true); } if (context.MatchingSourceMember == null) { context.MatchingSourceMember = sourceMember; } } return(false); }