gpt4 book ai didi

c# - 如何从映射中找到自动映射器配置文件?

转载 作者:行者123 更新时间:2023-11-30 18:15:15 27 4
gpt4 key购买 nike

我有很多映射配置文件,如何从源代码中的特定映射操作中找到正确的映射配置? Resharper 或 Visual Studio 扩展有帮助吗?

我想从这里跳下去:

var userDto = this.mapper.Map<User, UserDto>(user);

为此:

MapperConfiguration config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, UserDto>(MemberList.None);
/*etc...*/
});

这可能吗?我怎么会意识到呢?

最佳答案

如何将您的映射隔离在它自己的类中。

public class UserProfile: Profile
{
public UserProfile()
{
CreateMap<User, UserDto>(MemberList.None);
}
}

您的配置文件注册可能不同,但这里是动态注册它们的方法。

public class MapperProvider
{
private readonly Container container;

public MapperProvider(Container container)
{
this.container = container;
}

public IMapper GetMapper()
{
var mce = new MapperConfigurationExpression();
mce.ConstructServicesUsing(container.GetInstance);

MapperConfiguration mc = GetMapperConfiguration(mce);
IMapper m = new Mapper(mc, t => container.GetInstance(t));

return m;
}

public static MapperConfiguration GetMapperConfiguration(MapperConfigurationExpression mce)
{
var profiles = typeof(ApplicationProfile).Assembly.GetTypes()
.Where(t => typeof(Profile).IsAssignableFrom(t))
.ToList();

mce.AddProfiles(profiles);

var mc = new MapperConfiguration(mce);
mc.AssertConfigurationIsValid();
return mc;
}
}

这样,您就可以按名称搜索该配置文件类,并轻松导航到您的映射。

如果您知道用户映射位于 UserProfile 类中,它将起作用。

关于c# - 如何从映射中找到自动映射器配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48750658/

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