public AddedMapContext CreateMap <Dest, TService>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config)
            where TService : class, IYuzuTypeFactory <Dest>
        {
            var settings = baseSettings as YuzuTypeFactoryMapperSettings;

            if (settings != null)
            {
                Func <IYuzuTypeFactory> getFactory = () =>
                {
                    return(factory.GetInstance(typeof(TService)) as TService);
                };

                if (!config.ViewmodelFactories.ContainsKey(settings.Dest))
                {
                    config.ViewmodelFactories.Add(settings.Dest, getFactory);
                }
                config.AddActiveManualMap <TService, Dest>();

                return(mapContext);
            }
            else
            {
                throw new Exception("Mapping settings not of type YuzuTypeFactoryMapperSettings");
            }
        }
Esempio n. 2
0
        public AddedMapContext CreateMap <DestMember, Source, Dest, TService>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config)
            where TService : class, IYuzuTypeFactory <DestMember>
        {
            var settings = baseSettings as YuzuPropertyFactoryMapperSettings;

            if (settings != null)
            {
                config.AddActiveManualMap <TService, Dest>(settings.DestPropertyName);

                Func <Source, Dest, object, ResolutionContext, DestMember> mappingFunction = (Source m, Dest v, object o, ResolutionContext context) =>
                {
                    var propertyResolver = factory.GetInstance(typeof(TService)) as TService;
                    var yuzuContext      = contextFactory.From <UmbracoMappingContext>(context.Items);
                    return(propertyResolver.Create(yuzuContext));
                };

                var map = mapContext.AddOrGet <Source, Dest>(cfg);

                map.ForMember(settings.DestPropertyName, opt => opt.MapFrom(mappingFunction));

                return(mapContext);
            }
            else
            {
                throw new Exception("Mapping settings not of type YuzuPropertyFactoryMapperSettings");
            }
        }
        public AddedMapContext CreateMap <Source, Dest, TService>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config)
            where TService : class, IYuzuTypeConvertor <Source, Dest>
        {
            var settings = baseSettings as YuzuTypeConvertorMapperSettings;

            if (settings != null)
            {
                config.AddActiveManualMap <TService, Dest>();

                if (settings.IgnoreReturnType)
                {
                    importConfig.IgnoreViewmodels.Add(typeof(Dest).Name);
                }

                var map = mapContext.AddOrGet <Source, Dest>(cfg);

                Func <Source, Dest, ResolutionContext, Dest> mappingFunction = (Source source, Dest dest, ResolutionContext context) =>
                {
                    var typeConvertor = factory.GetInstance(typeof(TService)) as TService;
                    var yuzuContext   = contextFactory.From <UmbracoMappingContext>(context.Items);

                    return(typeConvertor.Convert(source, yuzuContext));
                };
                map.ConvertUsing(mappingFunction);

                return(mapContext);
            }
            else
            {
                throw new Exception("Mapping settings not of type YuzuTypeMappingSettings");
            }
        }
Esempio n. 4
0
        public AddedMapContext CreateMap <Source, Dest, Resolver>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config)
            where Resolver : class, IYuzuTypeAfterConvertor <Source, Dest>
        {
            var settings = baseSettings as YuzuTypeAfterMapperSettings;

            if (settings != null)
            {
                config.AddActiveManualMap <Resolver, Dest>();

                var map = mapContext.AddOrGet <Source, Dest>(cfg);

                Action <Source, Dest, ResolutionContext> mappingFunction = (Source source, Dest dest, ResolutionContext context) =>
                {
                    var typeConvertor = factory.GetInstance(typeof(Resolver)) as Resolver;
                    var yuzuContext   = contextFactory.From <UmbracoMappingContext>(context.Items);

                    typeConvertor.Apply(source, dest, yuzuContext);
                };
                map.AfterMap(mappingFunction);

                return(mapContext);
            }
            else
            {
                throw new Exception("Mapping settings not of type YuzuTypeMappingSettings");
            }
        }
Esempio n. 5
0
        public AddedMapContext CreateMap <Source, DestMember, Dest, Resolver>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config)
            where Resolver : class, IYuzuPropertyReplaceResolver <Source, DestMember>
        {
            var settings = baseSettings as YuzuPropertyMapperSettings;

            if (settings != null)
            {
                config.AddActiveManualMap <Resolver, Dest>(settings.DestPropertyName);

                if (settings.IgnoreProperty)
                {
                    importConfig.IgnorePropertiesInViewModels.Add(new KeyValuePair <string, string>(typeof(Dest).Name, settings.DestPropertyName));
                }

                if (settings.IgnoreReturnType)
                {
                    if (typeof(DestMember).IsGenericType)
                    {
                        importConfig.IgnoreViewmodels.Add(typeof(DestMember).GetGenericArguments().Select(x => x.Name).FirstOrDefault());
                    }
                    else
                    {
                        importConfig.IgnoreViewmodels.Add(typeof(DestMember).Name);
                    }
                }


                if (!string.IsNullOrEmpty(settings.GroupName))
                {
                    cfg.RecognizePrefixes(settings.GroupName);
                }

                Func <Source, Dest, object, ResolutionContext, DestMember> mappingFunction = (Source m, Dest v, object o, ResolutionContext context) =>
                {
                    var propertyResolver = factory.GetInstance(typeof(Resolver)) as Resolver;
                    var yuzuContext      = contextFactory.From <UmbracoMappingContext>(context.Items);
                    return(propertyResolver.Resolve(m, yuzuContext));
                };

                var map = mapContext.AddOrGet <Source, Dest>(cfg);

                map.ForMember(settings.DestPropertyName, opt => opt.MapFrom(mappingFunction));

                return(mapContext);
            }
            else
            {
                throw new Exception("Mapping settings not of type YuzuPropertyMappingSettings");
            }
        }