gpt4 book ai didi

asp.net-mvc - 自动发现 automapper 配置

转载 作者:行者123 更新时间:2023-12-04 22:34:11 25 4
gpt4 key购买 nike

当您在 MVC 中创建 Controller 时,您不必为它做任何额外的注册。添加区域也是如此。只要您的 global.asax 有一个 AreaRegistration.RegisterAllAreas() 调用,就不需要额外的设置。

使用 AutoMapper,我们必须使用某种 CreateMap<TSource, TDestination> 调用来注册映射。可以使用静态 Mapper.CreateMap 或通过从 AutoMapper.Profile 类派生、覆盖 Configure 方法并从那里调用 CreateMap 来显式执行这些操作。

在我看来,应该能够扫描程序集以查找从 Profile 扩展的类,就像 MVC 扫描从 Controller 扩展的类一样。使用这种机制,难道不能简单地通过创建一个派生自 Profile 的类来创建映射吗?是否存在任何这样的库工具,或者是否有内置于 automapper 的东西?

最佳答案

我不知道这样的工具是否存在,但写一个应该很简单:

public static class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(x => GetConfiguration(Mapper.Configuration));
}

private static void GetConfiguration(IConfiguration configuration)
{
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (var assembly in assemblies)
{
var profiles = assembly.GetTypes().Where(x => x != typeof(Profile) && typeof(Profile).IsAssignableFrom(x));
foreach (var profile in profiles)
{
configuration.AddProfile((Profile)Activator.CreateInstance(profile));
}
}
}
}

然后在您的 Application_Start 中,您可以 Autowiring :
AutoMapperConfiguration.Configure();

关于asp.net-mvc - 自动发现 automapper 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724326/

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