我有很多映射配置文件,如何从源代码中的特定映射操作中找到正确的映射配置? Resharper或Visual Studio扩展可以帮助吗?
我想跳出来:
var userDto = this.mapper.Map<User, UserDto>(user);
到此:
MapperConfiguration config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, UserDto>(MemberList.None);
/*etc...*/
});
有可能吗?我怎么能意识到这一点?
答案 0 :(得分:0)
如何在自己的类中隔离映射。
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
类中,则会有效。