gpt4 book ai didi

c# - ASP.NET MVC 中独立项目 IoC 中的 AutoMapper 相同配置文件类

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:14 26 4
gpt4 key购买 nike

在我们的解决方案中,我们有多个项目:

Project.Core

Project.Web

Project.Test

Project.Web.UI

在我的核心项目中,我有我的 DTO 类和我的实体类。

在我的 Web 项目中,我有我的 ViewModel。

对于映射,我正在使用 AutoMapper,我需要在我的 Core 和 Web 项目中设置配置文件。

例如:

我的核心项目中有一个 UserDtoUser 类。我创建了一个名为 UserProfile 的映射配置文件,它负责处理此映射。

/// <summary>
/// Mapping profile for users
/// </summary>
internal class UserProfile : Profile
{
public UserProfile()
{
CreateMap<User, UserDto>()
.ForMember(
dto => dto.Id,
expression => expression.Condition(src => src.HasIdentity)
).ReverseMap();
}
}

然后在我的 Web 项目中我也这样做:

/// <summary>
/// Mapping profile for users
/// </summary>
internal class UserProfile : Profile
{
public UserProfile()
{
CreateMap<User, UserModel>().ReverseMap();
CreateMap<User, UserDetailModel>().ReverseMap();
}
}

如您所见,我在单独的项目中有 2 个 UserProfile 类。

对于 IoC,我使用的是 Autofac:

// Register Automapper

builder.RegisterAssemblyTypes(Assembly.Load("Project.Core")).As<Profile>();

builder.RegisterAssemblyTypes(Assembly.Load("Project.Web")).As<Profile>();
builder.Register(context => new MapperConfiguration(cfg =>
{
foreach (var profile in context.Resolve<IEnumerable<Profile>>())
{
cfg.AddProfile(profile);
}
})).AsSelf().SingleInstance();
builder.Register(c => c.Resolve<MapperConfiguration>().CreateMapper(c.Resolve))
.As<AutoMapper.IMapper>()
.InstancePerLifetimeScope();

有一个重名配置文件 AutoMapper 类但在不同的项目中分开是不是很糟糕,我应该重命名其中一个类吗?

最佳答案

当然,您仍然可以通过命名空间来辨别类。但是迟早你(或者更可能是另一个开发人员)会混淆这些类。现在看起来清晰的名字几个月后就不会清晰了。

IMO 最好使用不同的名称。也许您可以使用 UserDtoProfileUserModelProfile 作为名称。

关于c# - ASP.NET MVC 中独立项目 IoC 中的 AutoMapper 相同配置文件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45049774/

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