如何映射具有自定义类属性的对象,该属性返回具有null属性值的对象,而不是使用Automapper返回null



我有这些类

public class SemModel
{
public int SemId {get; set}
public string AreaId {get; set}
public string Longitude {get; set}
public string Latitude {get; set}
}
public class SemDto 
{
public int SemId {get; set}
public AreaDto Area {get; set}
}
public class AreaDto 
{
public string AreaId {get; set}
public string Longitude {get; set}
public string Latitude {get; set}
}

我希望能够将SemModel映射到SemDto,其中如果AreaId、经度和纬度为空,则SemDto。Area与具有null值的AreaId,经度和纬度属性相适应。

实际输出是我有一个SemDto,其中Area属性为空

这是我的地图

CreateMap<SemModel, SemDto>()
.ForMember(dest => dest.Area, opt => opt.MapFrom(src => new AreaDto
{
AreaId = src.AreaId,
Longitude = src.Longitude,
Latitude = src.Latitude
}));

给定:

new SemModel(){SemId =1, AreaId =null, Longitude=null, Latitude=null}

预期输出:

new SemDto(){SemId = 1, Area = new Area(){ AreaId =null, Longitude =null, Latitude =null}}

实际输出:

new SemDto(){SemId = 1, Area = null}

再次尝试1

.ForPath(dest => dest.Area.AreaId, opt => opt.MapFrom(src => src.AreaId))
.ForPath(dest => dest.Area.Longitude, opt => opt.MapFrom(src => src.Longitude))
.ForPath(dest => dest.Area.Latitude, opt => opt.MapFrom(src => src.Latitude));

仍然没有运气。哎呀!

cfg.CreateMap<SemDto, SemModel>().IncludeMembers(s=>s.Area).ReverseMap();
cfg.CreateMap<AreaDto, SemModel>().ForMember(d=>d.SemId, o=>o.Ignore()).ReverseMap();

它使用了镇定。ForPath也起作用。

最新更新