如何从映射中找到automapper配置文件?

时间:2018-02-12 16:06:43

标签: c# automapper visual-studio-extensions

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

我想跳出来:

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

到此:

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

有可能吗?我怎么能意识到这一点?

1 个答案:

答案 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类中,则会有效。

相关问题