public static IEnumerable <IDataSource> Create(DataSourceFindContext context) { if (context.TargetMember.IsCustom) { yield break; } if (context.DoNotUseSourceMemberDataSource()) { if (context.DataSourceIndex == 0) { if (context.UseFallbackComplexTypeDataSource()) { yield return(ComplexTypeDataSource.Create(context.DataSourceIndex, context.MemberMappingData)); } } else if (context.UseFallbackForConditionalConfiguredDataSource()) { yield return(context.GetFallbackDataSource()); } if (context.UseConfiguredDataSourcesOnly()) { yield break; } } if (context.ReturnSimpleTypeToTargetDataSources()) { var updatedMapperData = new ChildMemberMapperData( context.MatchingSourceMemberDataSource.SourceMember, context.TargetMember, context.MemberMapperData.Parent); var configuredRootDataSources = context .MapperContext .UserConfigurations .GetDataSourcesForToTarget(updatedMapperData); foreach (var configuredRootDataSource in configuredRootDataSources) { yield return(configuredRootDataSource); } } yield return(context.MatchingSourceMemberDataSource); if (context.UseFallbackDataSource()) { yield return(context.GetFallbackDataSource()); } }
public IDataSource GetFinalDataSource(IDataSource foundDataSource, IChildMemberMappingData mappingData) { var childTargetMember = mappingData.MapperData.TargetMember; if (UseComplexTypeDataSource(foundDataSource, childTargetMember)) { return(ComplexTypeDataSource.Create(foundDataSource, DataSourceIndex, mappingData)); } if (childTargetMember.IsEnumerable && foundDataSource.SourceMember.IsEnumerable) { return(new EnumerableDataSource(foundDataSource, DataSourceIndex, mappingData)); } return(foundDataSource); }
public IDataSource CreateFor(IObjectMappingData mappingData) => ComplexTypeDataSource.Create(mappingData);