private void ConfigureAutoMapper(ContainerBuilder builder) { // static Mapper.Reset(); Mapper.Initialize(ConfigureAutoMapper); Mapper.Configuration.CompileMappings(); // instance builder.Register(c => (MapperConfiguration)Mapper.Configuration).AsSelf().SingleInstance(); builder.Register(c => c.Resolve <MapperConfiguration>().CreateMapper(c.Resolve <IComponentContext>().Resolve)).As <IMapper>().InstancePerLifetimeScope(); // linq var projectionConfiguration = new ProjectionMapperConfiguration(cfg => { cfg.AllowNullDestinationValues = false; ConfigureAutoMapper(cfg); }); projectionConfiguration.CompileMappings(); builder.Register(c => projectionConfiguration).As <IProjectionConfigurationProvider>().SingleInstance(); }
public static void ConfigureAutoMapper( this IServiceCollection services, Action <IMapperConfigurationExpression> configure) { Mapper.Reset(); Mapper.Initialize(configure); Mapper.Configuration.CompileMappings(); services.AddSingleton(opt => (MapperConfiguration)Mapper.Configuration); services.AddScoped(opt => opt .GetService <MapperConfiguration>() .CreateMapper(opt.GetRequiredService <IServiceScope>().ServiceProvider.GetService)); var projectionConfiguration = new ProjectionMapperConfiguration(cfg => { cfg.AllowNullDestinationValues = false; configure(cfg); }); projectionConfiguration.CompileMappings(); services.AddSingleton <IProjectionConfigurationProvider>(opt => projectionConfiguration); }