gpt4 book ai didi

asp.net-mvc-3 - 在哪里定义 AutoMapper 映射?

转载 作者:行者123 更新时间:2023-12-04 11:15:02 26 4
gpt4 key购买 nike

我应该在我的 ASP.NET MVC 应用程序的哪个位置定义我的 AutoMapper 映射?

Mapper.CreateMap<User, UserViewModel>();

目前,我在 BaseController 的构造函数中定义这些,我的所有 Controller 都从该构造函数中派生。这是最好的地方吗?

最佳答案

我认为回答这个问题有点晚了,但也许有人可以使用我的答案。

我使用 Ninject 来解决依赖关系,所以我为 AutoMapper 创建了 Ninject 模块。这是代码:

public class AutoMapperModule : NinjectModule
{
public override void Load()
{
Bind<IConfiguration>().ToMethod(context => Mapper.Configuration);
Bind<IMappingEngine>().ToMethod(context => Mapper.Engine);

SetupMappings(Kernel.Get<IConfiguration>());

Mapper.AssertConfigurationIsValid();
}

private static void SetupMappings(IConfiguration configuration)
{
IEnumerable<IViewModelMapping> mappings = typeof(IViewModelMapping).Assembly
.GetExportedTypes()
.Where(x => !x.IsAbstract &&
typeof(IViewModelMapping).IsAssignableFrom(x))
.Select(Activator.CreateInstance)
.Cast<IViewModelMapping>();

foreach (IViewModelMapping mapping in mappings)
mapping.Create(configuration);
}
}

正如您在加载时看到的那样,它会扫描程序集以实现 IViewModelMapping,然后运行 ​​Create 方法。

这是 IViewModelMapping 的代码:
interface IViewModelMapping
{
void Create(IConfiguration configuration);
}

IViewModelMapping 的典型实现如下所示:
public class RestaurantMap : IViewModelMapping
{
public void Create(IConfiguration configuration)
{
if (configuration == null)
throw new ArgumentNullException("configuration");

IMappingExpression<RestaurantViewModel, Restaurant> map =
configuration.CreateMap<RestaurantViewModel, Restaurant>();
// some code to set up proper mapping

map.ForMember(x => x.Categories, o => o.Ignore());
}
}

关于asp.net-mvc-3 - 在哪里定义 AutoMapper 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5776999/

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