Search
 
SCRIPT & CODE EXAMPLE
 
CODE EXAMPLE FOR CSHARP

using autofac with automapper .net 6 with Dependency Injection

//create class name it for example AutoMapperModule

    public class AutoMapperModule :  Autofac.Module
    {
        protected override void Load(ContainerBuilder builder)
        {
        //Also register any custom type converter/value resolvers
            builder.RegisterType<CustomValueResolver>().AsSelf();
            builder.RegisterType<CustomTypeConverter>().AsSelf();
        
            builder.Register(c =>

            {
                var context = c.Resolve<IComponentContext>();
               return new MapperConfiguration(cfg =>
           
               cfg.CreateMap<MyModel, MyVModelDto>().
               ConstructUsing(e => new MyModelDto(context.Resolve<IMyModelDtoRegisteredService>())).ReverseMap());               

           }).AsSelf().SingleInstance();

            builder.Register(c =>
            {
            //This resolves a new context that can be used later.
                var context = c.Resolve<IComponentContext>();
                var config = context.Resolve<MapperConfiguration>();
                return config.CreateMapper(context.Resolve);
            }
            ).As<IMapper>().InstancePerLifetimeScope();
        }
    }

// in Program.cs file 

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());


// Add services to the container.
builder.Services.AddControllersWithViews();

//Register your own things directly with Autofac here

builder.Host.ConfigureContainer<ContainerBuilder>(builder => builder.RegisterType<Service>().As<IService>());
//etc...
// At the end registering your own things directly with Autofac add here
builder.Host.ConfigureContainer<ContainerBuilder>(builder => builder.RegisterModule(new AutoMapperModule()));

var app = builder.Build();

 
PREVIOUS NEXT
Tagged: #autofac #automapper #Dependency #Injection
ADD COMMENT
Topic
Name
6+1 =