Немного о том, как использовать automapper в моих библиотеках классов проектов (dll). См. Мою структуру моего общего решения ниже.Как инициализировать профили AutoMapper в связанных DLL-проектах проекта в ASP.Net webapp
WebApp запускается, и в приложении запуска Global.asax запускается метод AutoMapper.Configure() для добавления профилей сопоставления. На данный момент я просто добавляю Service.AutoMapperViewModelProfile. Но мне нужно как-то учитывать профили в каждом из WebStoreAdapters (BigCommerce и Shopify в приведенном ниже примере). Я надеялся не добавлять ссылки на каждый WebStoreAdapter в WebApp, просто ради того, чтобы добавлять профили во время AutoMapperConfig. Если я добавлю еще один вызов AutoMapper.Initialize в WebStoreFactory, он переопределяет значение в WebApp.
Есть ли другой способ, по которому я отсутствую или полностью покидаю базу здесь каким-то другим способом?
WebApp
- AutoMapperConfig
- AddProfile Services.AutoMapperViewModelProfile
Services.dll
- AutoMapperViewModelProfile
Scheduler.dll (uses HangFire to execute cron jobs to get data from shop carts. Its UI is accessed via the WebApp)
WebStoreAdapter.dll
-WebStoreFactory
BigCommerceAdapter.dll
- AutoMapperBigCommerceDTOProfile
ShopifyAdapter.dll
- AutoMapperShopifyDTOProfile
Инициализация, как вызывается из Global.asax:
public static class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(am =>
{
am.AddProfile<AutoMapperViewModelProfile>();
});
}
}
Профиль:
public class AutoMapperViewModelProfile : Profile
{
public override string ProfileName
{
get { return this.GetType().ToString(); }
}
protected override void Configure()
{
CreateMap<InventoryContainerHeader, InventoryContainerLabelPrintZPLViewModel>()
.ForMember(vm => vm.StatusDescription, opt => opt.MapFrom(entity => entity.InventoryContainerStatus.DisplayText))
.ForMember(dest => dest.ContainerDetails, option => option.Ignore())
;
...
}
}