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.");
            }
            }
        }
Example #3
0
        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.");
            }
            }
        }