在每个控制器中使用 Autofac 注入自动映射器 class
Inject automapper with Autofac in each Controller class
我想在应用程序的其他层中注入自动映射器。我已经阅读了其他帖子和文章,但我无法弄清楚如何应用它们。我是自动映射和 IoC 的新手。这是我现在尝试过的。我可以更改什么以便将自动映射器注入控制器和其他层?
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();
}
...
}
试试这个
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;
}
我想在应用程序的其他层中注入自动映射器。我已经阅读了其他帖子和文章,但我无法弄清楚如何应用它们。我是自动映射和 IoC 的新手。这是我现在尝试过的。我可以更改什么以便将自动映射器注入控制器和其他层?
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();
}
...
}
试试这个
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;
}