6

ASP.NET MVC çözümü ve Unity DI ile Automapper kullanmayı planlıyorum. Nasıl kullanılacağı hakkında automapper tarihinde yayınlanan video çok eski ve mapper'ın bağımlılık enjeksiyonuyla nasıl kullanılabileceğini göstermiyor. Stackoverflow'daki örneklerin çoğu, artık kullanımdan kaldırılmış olan Mapper.CreateMap() yöntemini kullanır.Birlik dependancy enjeksiyonlu Automapper nasıl kullanılır?

automapper kılavuz, türlerini sahip olduktan sonra bir MapperConfiguration örneği ve CreateMap kullanılarak iki tip için bir harita oluşturabilir

söylüyor. Uygulama alanı başına yalnızca bir MapperConfiguration örneğine gereksinim duyarsınız ve başlangıç ​​sırasında örneği olmalıdır.

var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>()); 

Yani ben, bir eşleme gerçekleştirmek bir IMapper CreateMapper yöntemi kullanmak oluşturmak için Global.asax

gibi, uygulama başlatma girecek kod çizgisinin üzerinde varsayıyorum.

var mapper = config.CreateMapper(); 
OrderDto dto = mapper.Map<OrderDto>(order); 

Yukarıdaki satır denetleyiciye gider. Ancak bu config değişkeninin nereden geldiğini anlamıyorum? Denetleyicide IMapper'ı nasıl enjekte edebilirim?

+0

Kapsayıcıyı, "IMapper" ile mapper örneği arasında eşleyecek şekilde yapılandırmalısınız. Daha sonra denetleyiciden 'IMapper' üzerine bir bağımlılık beyan etmelisiniz (kurucuda bir IMapper'i kabul ederek). –

+0

herhangi bir örnek? Bu yüzden harita vermem gereken her varlık için yeni MapperConfiguration() olacak mı? Örnek gerçekten yardımcı olur – LP13

cevap

11

İlk olarak bir MapperConfiguration oluşturup bunun gibi yapılandırılmış tüm türlerini içeren bir IMapper ondan:

container.RegisterInstance(mapper); 

: Sonra

var config = new MapperConfiguration(cfg => 
{ 
    //Create all maps here 
    cfg.CreateMap<Order, OrderDto>(); 

    cfg.CreateMap<MyHappyEntity, MyHappyEntityDto>(); 

    //... 
}); 

IMapper mapper = config.CreateMapper(); 

, böyle birlik konteyner ile mapper örneğini kayıt Daha sonra, eşleştiriciyi kullanmak isteyen herhangi bir denetleyici (veya hizmet), kurucuya bu tür bağımlılığı şu şekilde bildirebilir:

Kapsayıcıyı MVC çerçevesiyle doğru bir şekilde ayarladığınızı varsayarsak, denetleyici bir sorun olmadan yapılandırılabilir olmalıdır. Üste |