gpt4 book ai didi

c# - 如何在 ASP.Net webapp 中的引用项目 DLL 中初始化 AutoMapper 配置文件

转载 作者:太空狗 更新时间:2023-10-30 00:18:19 25 4
gpt4 key购买 nike

为如何在我的项目类库 (dll) 中使用自动映射器而苦苦挣扎。在下面查看我的整体解决方案的结构。

WebApp 启动,在 Global.asax App Start 中调用 AutoMapper.Configure() 方法来添加映射配置文件。现在我只是添加 Services.AutoMapperViewModelProfile。但我需要以某种方式考虑每个 WebStoreAdapter 中的配置文件(下例中的 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())
;
...
}
}

最佳答案

一种方法是使用反射加载所有配置文件:

        var assembliesToScan = AppDomain.CurrentDomain.GetAssemblies();
var allTypes = assembliesToScan.SelectMany(a => a.ExportedTypes).ToArray();

var profiles =
allTypes
.Where(t => typeof(Profile).GetTypeInfo().IsAssignableFrom(t.GetTypeInfo()))
.Where(t => !t.GetTypeInfo().IsAbstract);

Mapper.Initialize(cfg =>
{
foreach (var profile in profiles)
{
cfg.AddProfile(profile);
}
});

您不直接引用任何一个 Automapper 配置文件,而只是从当前 AppDomain 加载所有配置文件。

关于c# - 如何在 ASP.Net webapp 中的引用项目 DLL 中初始化 AutoMapper 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38555702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com