我正在将项目中的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;
}
}