Automapper 6.2.2有条件的不平整?

时间:2018-01-12 20:48:52

标签: c# automapper automapper-6

我最近更新到最新版本的Automapper(6.2.2),以利用unflattening via .ReverseMap()。一切似乎进展顺利,直到我意识到无论平顶的源属性是否具有值,它总是创建一个空对象。完全可以理解,但为了防止这种情况,我尝试添加条件,如下:

cfg.CreateMap<Entity, DTO>()
    .ReverseMap()
        .ForMember(d => d.UnflattenedType, o => o.Condition(s => s.FlattenedId.HasValue));

这似乎不起作用,我现在一直在寻找解决方案。

所以我的问题是,有没有办法在使用ReverseMap时有条件地阻止automapper初始化目标对象(unflattening)?

更新

我通过执行以下操作找到了解决方法,但我仍在寻找合适的解决方案。

cfg.CreateMap<Entity, DTO>()
    .ReverseMap()
        .AfterMap((s, d) => d.UnflattenedType = s.FlattenedId.HasValue ? d.UnflattenedType : null);

2 个答案:

答案 0 :(得分:1)

根据Automapper的开发人员的说法,从版本6.2.2开始,这是不可能的。看看我在他们的GitHub上发布的这个问题了解更多信息:

https://github.com/AutoMapper/AutoMapper/issues/2498

答案 1 :(得分:0)

你试过ForPath吗?

cfg.CreateMap<Entity, DTO>()
    .ReverseMap()
        .ForPath(d => d.UnflattenedType, o => o.MapFrom(s => s.FlattenedId.HasValue ? s.FlattenedId : null));