private static ConfiguredMappers CreateConfiguredMappersCache(PropBagMappingStrategyEnum mappingStrategy) { Func <Action <IMapperConfigurationExpression>, IConfigurationProvider> configBuilder = new MapperConfigurationProvider().BaseConfigBuilder; MapperConfigInitializerProvider mapperConfigExpression = new MapperConfigInitializerProvider(mappingStrategy); ConfiguredMappers result = new ConfiguredMappers(configBuilder, mapperConfigExpression); return(result); }
// TypeDesc<T>-based Converter Cache public static ConfiguredMappers GetMapperCache(PropBagMappingStrategyEnum mappingStrategy) { switch (mappingStrategy) { case PropBagMappingStrategyEnum.ExtraMembers: { return(theSingleConfiguredMappersCacheExtraMembers.Value); } case PropBagMappingStrategyEnum.EmitProxy: { return(theSingleConfiguredMappersCacheEmitProxy.Value); } default: { throw new ApplicationException("That mapping strategy is not supported, or unrecognized."); } } }
public MapperConfigInitializerProvider(PropBagMappingStrategyEnum mappingStrategy) { switch (mappingStrategy) { case PropBagMappingStrategyEnum.EmitProxy: { InitialConfigurationAction = BuildEmitProxyConfig; break; } case PropBagMappingStrategyEnum.ExtraMembers: { InitialConfigurationAction = new MapperConfigForExtraMembers().InitialConfigurationAction; break; } default: { throw new ApplicationException($"{nameof(mappingStrategy)} has value {mappingStrategy} which is not supported or unexpected."); } } }