我正在升级项目中的AutoMapper,从静态Mapper.CreateMap转换为新方式并注入IMapper我需要映射的位置.
除了一个用例外,这很好.我有几个ITypeConverter用于复杂映射的s正在使用该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;
}
}
Run Code Online (Sandbox Code Playgroud)
在ResolutionContext包含于当前映射引擎的参考.切换Mapper.Map与context.Engine.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 = context.Engine.Mapper.Map.Map<Property>(src.SomeProperty);
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4572 次 |
| 最近记录: |