public MethodInfo MakeGenericMethod(YuzuMapperSettings baseSettings) { var settings = baseSettings as YuzuTypeFactoryMapperSettings; if (settings != null) { var genericArguments = settings.Factory.GetInterfaces().FirstOrDefault().GetGenericArguments().ToList(); genericArguments.Add(settings.Factory); var method = GetType().GetMethod("CreateMap"); return(method.MakeGenericMethod(genericArguments.ToArray())); } else { throw new Exception("Mapping settings not of type YuzuTypeFactoryMapperSettings"); } }
public MethodInfo MakeGenericMethod(YuzuMapperSettings baseSettings) { var settings = baseSettings as YuzuGlobalMapperSettings; if (settings != null) { var genericArguments = new List <Type>(); genericArguments.Add(settings.Source); genericArguments.Add(settings.Dest); var method = GetType().GetMethod("CreateMap"); return(method.MakeGenericMethod(genericArguments.ToArray())); } else { throw new Exception("Mapping settings not of type YuzuGlobalMapperSettings"); } }
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"); } }
public AddedMapContext CreateMap <Source, DestParent, DestChild>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config) { var settings = baseSettings as YuzuGroupMapperSettings; if (settings != null) { var groupNameWithoutSpaces = settings.GroupName.Replace(" ", ""); cfg.RecognizePrefixes(groupNameWithoutSpaces); mapContext.AddOrGet <Source, DestChild>(cfg); var parentMap = mapContext.AddOrGet <Source, DestParent>(cfg); parentMap.ForMember(settings.PropertyName, opt => opt.MapFrom(y => y)); return(mapContext); } else { throw new Exception("Mapping settings not of type YuzuGroupMapperSettings"); } }
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, 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"); } }
public AddedMapContext CreateMap <Source, Dest, SourceMember, DestMember, Resolver>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config) where Resolver : class, IYuzuFullPropertyResolver <Source, Dest, SourceMember, DestMember> { var settings = baseSettings as YuzuFullPropertyMapperSettings; if (settings != null) { if (settings.IgnoreProperty) { importConfig.IgnorePropertiesInViewModels.Add(new KeyValuePair <string, string>(typeof(Dest).Name, settings.DestPropertyName)); } if (settings.IgnoreReturnType) { importConfig.IgnoreViewmodels.Add(typeof(Type).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 sourceValue = ((SourceMember)typeof(Source).GetProperty(settings.SourcePropertyName).GetValue(m)); var yuzuContext = contextFactory.From <UmbracoMappingContext>(context.Items); return(propertyResolver.Resolve(m, v, sourceValue, settings.DestPropertyName, 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"); } }
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"); } }
public AddedMapContext CreateMap <Source, Dest>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config) { var settings = baseSettings as YuzuGlobalMapperSettings; if (settings != null) { if (settings.GroupName != null) { cfg.RecognizePrefixes(settings.GroupName); } mapContext.AddOrGet <Source, Dest>(cfg); return(mapContext); } else { throw new Exception("Mapping settings not of type YuzuGlobalMapperSettings"); } }
public AddedMapContext CreateMap <Source, DestMember, Dest, Resolver>(MapperConfigurationExpression cfg, YuzuMapperSettings baseSettings, IFactory factory, AddedMapContext mapContext, IYuzuConfiguration config) where Resolver : class, IYuzuPropertyAfterResolver <Source, DestMember> { var settings = baseSettings as YuzuPropertyAfterMapperSettings; if (settings != null) { //need a fix here //config.AddActiveManualMap<Resolver, Dest>(settings.DestProperty); if (!string.IsNullOrEmpty(settings.GroupName)) { cfg.RecognizePrefixes(settings.GroupName); } Func <DestMember, DestMember> mappingFunction = (DestMember input) => { var propertyResolver = factory.GetInstance(typeof(Resolver)) as Resolver; return(propertyResolver.Apply(input)); }; var map = mapContext.AddOrGet <Source, Dest>(cfg); map.ForMember <DestMember>(settings.DestProperty as Expression <Func <Dest, DestMember> >, opt => opt.AddTransform(x => mappingFunction(x))); return(mapContext); } else { throw new Exception("Mapping settings not of type YuzuPropertyMappingSettings"); } }