0

Ich möchte den Auto-Mapper in andere Schichten der Anwendung injizieren. Ich habe andere Beiträge und Artikel gelesen, aber ich kann nicht herausfinden, wie man sie anwendet. Ich bin neu im Automapping und IoC. Das habe ich jetzt versucht. Was kann ich ändern, damit ich Auto-Mapper in Controller und andere Ebenen injiziert?Auto-Mapper mit Autofac in jeder Controller-Klasse injizieren

public class AutomapperConfig 
{ 
    public MapperConfiguration Config { get; set; } 
    public void Initialize() 
    { 
     Config = new MapperConfiguration(cfg => 
     { 
      cfg.CreateMap<CustomerViewModel, CustomerBusinessModel>().ReverseMap(); 
      ... 
     } 
} 

public static IContainer BuildContainer() 
{ 
    var builder = new ContainerBuilder(); 
    builder.RegisterControllers(typeof(MvcApplication).Assembly); 
    .... 
    return builder.Build(); 
} 

public class MvcApplication : System.Web.HttpApplication 
{ 
    public IContainer _container; 
    protected void Application_Start() 
    { ... 
     _container = AutofacConfig.BuildContainer(); 
     DependencyResolver.SetResolver(new AutofacDependencyResolver(_container)); 
    } 
} 

public class CustomersController : Controller 
{ 
    private readonly IBusinessLogic<CustomerBusinessModel> _customerBl; 
    private readonly IMapper mapper; 

    public CustomersController (IBusinessLogic<CustomerBusinessModel> customer, AutomapperConfig automapper) 
    { 
     _customerBl= customer; 
     mapper = automapper.Config.CreateMapper(); 
    } 
    ... 
} 

Antwort

1

Versuchen Sie, diese

builder.Register(c => new MapperConfiguration(cfg => 
    { 
     cfg.CreateMap<CustomerViewModel, CustomerBusinessModel>().ReverseMap(); 
     ... 
    }) 
    .AsImplementedInterfaces().SingleInstance(); 

builder.Register(c => c.Resolve<IConfigurationProvider>().CreateMapper()) 
    .As<IMapper>(); 

CustomerController.cs

public class CustomersController : Controller 
{ 
    private readonly IBusinessLogic<CustomerBusinessModel> _customerBl; 
    private readonly IMapper _mapper; 

    public CustomersController (IBusinessLogic<CustomerBusinessModel> customer, IMapper mapper) 
    { 
     _customerBl= customer; 
     _mapper = mapper; 
    }