我在项目中升级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;
}
}
答案 0 :(得分:7)
$input = str_replace(",", ".", $input);
包含对当前Mapping引擎的引用。使用ResolutionContext
切换Mapper.Map
,您就可以了。
context.Engine.Mapper.Map