c# – Automapper – ReverseMap()不执行映射
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Automapper – ReverseMap()不执行映射,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1863字,纯文字阅读大概需要3分钟。
内容图文
我有以下两个班级:
public class ReferenceEngine
{
public Guid ReferenceEngineId { get; set; }
public string Description { get; set; }
public int Horsepower { get; set; }
}
public class Engine
{
public Guid Id { get; set; }
public string Description { get; set; }
public int Power { get; set; }
}
我正在使用automapper来执行从ReferenceEngine到Engine的映射,反之亦然.请注意,属性ReferenceEngineId / Id和Horsepower / Power的名称不同.
以下映射配置有效,并且成功映射了具有不同名称的属性:
public static void ConfigureMapperWorking()
{
AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)).ReverseMap();
AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => Guid.Parse(src.ReferenceEngineId.ToString())))
.ForMember(dest => dest.Power, opt => opt.MapFrom(src => src.Horsepower));
AutoMapper.Mapper.CreateMap<Engine, ReferenceEngine>()
.ForMember(dest => dest.ReferenceEngineId, opt => opt.MapFrom(src => Guid.Parse(src.Id.ToString())))
.ForMember(dest => dest.Horsepower, opt => opt.MapFrom(src => src.Power));
}
但是,尽管我在最后调用ReverseMap()方法,但以下方法不起作用:
public static void ConfigureMapperNotWorking()
{
AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.ReferenceEngineId))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description))
.ForMember(dest => dest.Power, opt => opt.MapFrom(src => src.Horsepower)).ReverseMap();
}
我的问题是,当属性名称不同时,我们是否应该手动指定TSource-> TDestination和TDestination-> TSource映射?我认为ReverseMap的目的是避免我们手动指定双向映射.
解决方法:
ReverseMap仅创建一个简单的反向映射.例如,它会自动配置
Mapper.CreateMap<Engine, ReferenceEngine>();
从
Mapper.CreateMap<ReferenceEngine, Engine>();
要获得更复杂的东西,您必须手动配置它.
内容总结
以上是互联网集市为您收集整理的c# – Automapper – ReverseMap()不执行映射全部内容,希望文章能够帮你解决c# – Automapper – ReverseMap()不执行映射所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。