プロジェクトクラスライブラリ(dll)でautomapperを使用する方法について少し苦労しています。下の私の全体的なソリューションの私の構造を見てください。ASP.Net webappの参照プロジェクトDLLでAutoMapperプロファイルを初期化する方法
WebAppが起動し、Global.asax App Startでは、AutoMapper.Configure()メソッドが呼び出されてマッピングプロファイルが追加されます。今のところは、Services.AutoMapperViewModelProfileを追加するだけです。しかし、WebStoreAdapterのそれぞれのプロファイルをどうにかして説明する必要があります(以下の例のBigCommerceとShopify)。 AutoMapperConfig中にプロファイルを追加できるように、WebAppの各WebStoreAdapterへの参照を追加しないことを望んでいました。 WebStoreFactoryのAutoMapper.Initializeへの別の呼び出しを追加すると、WebAppのAutoMapper.Initializeを上書きします。
私は他のやり方でここに欠けているか完全に根元から外れている別の方法がありますか?
のGlobal.asaxから呼び出されて初期化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
:
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())
;
...
}
}