在我的项目类库(dlls)中如何使用自动映射器有点挣扎。请参阅下面我的整体解决方案的结构。
WebApp 启动,在 Global.asax App Start 中,调用 AutoMapper.Configure() 方法来添加映射配置文件。现在我只是添加 Services.AutoMapperViewModelProfile。但是我需要以某种方式考虑每个 WebStoreAdapters 中的配置文件(下例中的 BigCommerce 和 Shopify)。我希望不要在 WebApp 中添加对每个 WebStoreAdapter 的引用,只是为了能够在 AutoMapperConfig 期间添加配置文件。如果我在 WebStoreFactory 中添加对 AutoMapper.Initialize 的另一个调用,它将覆盖 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())
;
...
}
}