public SourceMemberMetaMemberPart( IQualifiedMember sourceMember, IMemberMapperData parentMapperData, bool isRootMemberPart) : base(parentMapperData) { _isRootMemberPart = isRootMemberPart; SourceMember = sourceMember.RelativeTo(parentMapperData.SourceMember); }
public IQualifiedMember RelativeTo(IQualifiedMember otherMember) { return(new DictionarySourceMember( Type, _wrappedSourceMember.RelativeTo(otherMember), _matchedTargetMember, IsEntireDictionaryMatch, KeyType, ValueType)); }
public static Expression GetRelativeQualifiedAccess( this IQualifiedMember member, IMemberMapperData mapperData, out IQualifiedMember relativeMember) { relativeMember = member.RelativeTo(mapperData.SourceMember); var qualifiedAccess = relativeMember.GetQualifiedAccess(mapperData); return(qualifiedAccess); }
public static SourceMemberDataSource For(IQualifiedMember sourceMember, IMemberMapperData mapperData) { sourceMember = sourceMember.RelativeTo(mapperData.SourceMember); var sourceMemberValue = sourceMember .GetQualifiedAccess(mapperData) .GetConversionTo(sourceMember.Type); var sourceMemberDataSource = new SourceMemberDataSource(sourceMember, sourceMemberValue, mapperData); return(sourceMemberDataSource); }
private static IDataSource GetSourceMemberDataSourceOrNull( IQualifiedMember bestMatchingSourceMember, IChildMemberMappingData mappingData) { if (bestMatchingSourceMember == null) { return(null); } bestMatchingSourceMember = bestMatchingSourceMember.RelativeTo(mappingData.MapperData.SourceMember); var sourceMemberDataSource = new SourceMemberDataSource(bestMatchingSourceMember, mappingData.MapperData); return(GetFinalDataSource(sourceMemberDataSource, 0, mappingData)); }
private static IDataSource ApplyFilter( IQualifiedMember sourceMember, IDataSource dataSource, IMemberMapperData mapperData) { if (DoNotApplyFilter(sourceMember, dataSource, mapperData)) { return(dataSource); } var filters = mapperData.GetSourceValueFilters(sourceMember.Type); if (filters.None()) { return(dataSource); } var contextMapperData = mapperData.IsEntryPoint || (sourceMember != mapperData.SourceMember) ? mapperData : mapperData.Parent; var rawSourceValue = sourceMember .RelativeTo(contextMapperData.SourceMember) .GetQualifiedAccess(contextMapperData.SourceObject); var filterConditions = filters.GetFilterConditionsOrNull(rawSourceValue, contextMapperData); if (filterConditions == null) { return(dataSource); } if (dataSource.IsConditional) { filterConditions = Expression.AndAlso(dataSource.Condition, filterConditions); } return(new AdHocDataSource(sourceMember, dataSource.Value, filterConditions)); }