0

オートマトンをアプリケーションの他のレイに注入したい。私は他の記事や記事を読んだことがありますが、それらを適用する方法を把握することはできません。私はオートキャッシングとIoCの初心者です。これは私が今試したことです。私はオートマトンがコントローラや他の層に注入されるように何を変えることができますか?各コントローラクラスのAutofacでオートマトンを注入する

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(); 
    } 
    ... 
} 

答えて

1

この

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; 
    } 
をお試しください
関連する問題