在ITypeConverter中使用Automapper

时间:2016-03-04 12:38:29

标签: c# automapper

我在项目中升级AutoMapper,从静态Mapper.CreateMap转换为新方式,并在我需要映射的地方注入IMapper

除了一个用例外,这很好。我有几个ITypeConverter用于使用Mapper.Map函数的复杂映射。我怎样才能解决这个问题?以下是我目前使用的代码。

静态Mapper.Map无法找到我定义的映射,因为没有使用静态方法创建。

public partial class ApplicationMappingsProfile
{
    private void RegisterMappings()
    {
        CreateMap<Application, AppDto>()
            .ConvertUsing<ApplicationTypeConverter>();
    }
}

private class ApplicationTypeConverter : ITypeConverter<App, AppDto>
{
    public AppDto Convert(ResolutionContext context)
    {
        var src = context.SourceValue as App;
        if (src == null)
        {
            return null;
        }

        var dto = Mapper.Map<App, AppDto>(src);
        dto.property = Mapper.Map<Property>(src.SomeProperty);

        return result;
    }
}

1 个答案:

答案 0 :(得分:7)

$input = str_replace(",", ".", $input); 包含对当前Mapping引擎的引用。使用ResolutionContext切换Mapper.Map,您就可以了。

context.Engine.Mapper.Map