如何解决automapper概要文件类使用现有的映射定义
我有3类:A,B和C,其中A和B都应转换为C,而A是B的包装:
public class C
{
public int Id { get; set; }
public string Title { get; set; }
// other properties ...
}
public class B
{
public int Id { get; set; }
public string Title { get; set; }
// other properties ...
}
public class A
{
public int IdA { get; set; }
public B Data { get; set; }
}
然后我使用自动映射器配置文件类创建映射:
public class MapperProfile: Profile
{
public MapperProfile()
{
CreateMap<B,C>();
CreateMap<A,C>();
}
}
从A映射到C时,我想用A的Id
覆盖C的IdA
,而Data
中的其他所有内容都填充到C中的其他属性,这实际上是定义的映射与CreateMap<B,C>()
。
对stackoverflow的搜索建议使用ConvertUsing
,但这需要一个映射器实例,而我在Profile
类中没有实例。有什么想法吗?
解决方法
您可以使用ConverUsing
重载来实现此目的。您的映射配置文件如下所示:
CreateMap<B,C>();
CreateMap<A,C>()
.ConvertUsing((src,dst,ctx) =>
{
var c = ctx.Mapper.Map<C>(src.Data);
c.Id = src.IdA;
return c;
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。