Example #1
0
 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);
 }
Example #2
0
 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);
 }
Example #3
0
        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)));
 }
Example #5
0
        public void FromService <TService>(Func <TService, Func <TSource, object> > func)
        {
            var dynamicResolver = new CurryDynamicResolver <TSource, TDest, TDestMember, TService>(func);

            configurationExpression.ResolveUsing(dynamicResolver);
        }