public static void DropAndCreateCollection <TSource, TSourceItem, TDestination, TDestinationItem> ( this IMemberConfigurationExpression <TSource, TDestination, ICollection <TDestinationItem> > config, Expression <Func <TSource, ICollection <TSourceItem> > > sourceCollectionSelector, Func <TSourceItem, TDestinationItem> projection = null, Action <TDestinationItem> removeCallback = null ) { config.ResolveUsing(new DropAndCreateCollectionResolver <TSource, TSourceItem, TDestination, TDestinationItem>(projection, removeCallback), sourceCollectionSelector); }
public static void SyncCollectionByKey <TSource, TSourceItem, TDestination, TDestinationItem, TKey> ( this IMemberConfigurationExpression <TSource, TDestination, ICollection <TDestinationItem> > config, Expression <Func <TSource, ICollection <TSourceItem> > > sourceCollectionSelector, Func <TSourceItem, TKey> sourceKeySelector, Func <TDestinationItem, TKey> destinationSelector, Func <TSourceItem, TDestinationItem> createFunction = null, Action <TSourceItem, TDestinationItem> updateFunction = null, Action <TDestinationItem> removeFunction = null, bool keepRemovedItemsInDestinationCollection = false ) { config.ResolveUsing(new SyncByKeyCollectionResolver <TSource, TSourceItem, TDestination, TDestinationItem, TKey>() { SourceKeySelector = sourceKeySelector, DestinationKeySelector = destinationSelector, CreateFunction = createFunction ?? Mapper.Map <TSourceItem, TDestinationItem>, UpdateFunction = updateFunction ?? ((s, d) => Mapper.Map(s, d)), RemoveFunction = removeFunction ?? (d => { }), KeepRemovedItemsInDestinationCollection = keepRemovedItemsInDestinationCollection }, sourceCollectionSelector); }
public static void Unflatten <T>(this IMemberConfigurationExpression <T> config) { config.ResolveUsing((resolutionResult, source) => { var prefix = resolutionResult.Context.MemberName; var resolvedObject = Activator.CreateInstance(resolutionResult.Context.DestinationType); var targetProperties = resolvedObject.GetType().GetProperties(); foreach (var sourceMember in source.GetType().GetProperties()) { // find the matching target property and populate it var matchedProperty = targetProperties .FirstOrDefault(p => sourceMember.Name == prefix + p.Name); matchedProperty?.SetValue(resolvedObject, sourceMember.GetValue(source)); } return(resolvedObject); }); }
public static void ResolveWithWarehouseLocationFormatting <T>(this IMemberConfigurationExpression <T> scope, Func <T, string> resolver) { scope.ResolveUsing(m => LocationDescriptionHelper.FormatLocationDescription(resolver.Invoke(m))); }
public void FromService <TService>(Func <TService, Func <TSource, object> > func) { var dynamicResolver = new CurryDynamicResolver <TSource, TDest, TDestMember, TService>(func); configurationExpression.ResolveUsing(dynamicResolver); }