自动映射:使用自定义解析程序返回的结构

使用AutoMapper,我使用ValueResolver返回这样的结构

struct MyStruct { public int propA; public int propB; public int propC; } class MyResolver : ValueResolver { protected override MyStruct ResolveCore(MyViewModel source) { ....return MyStruct data } } 

我返回了一个结构,因为映射规则非常复杂,我无法为每个属性编写自定义解析器,因为它们彼此相关。

所以我的想法是在一个返回结构并使用它的解析器中执行此操作

 AutoMapper.Mapper.CreateMap() .ForMember(dest => dest.SomePropA, src => src.ResolveUsing().propA)) .ForMember(dest => dest.SomePropB, src => src.ResolveUsing().propB)) 

不幸的是,这不起作用。

看起来像src.ResolveUsing()没有返回结构

任何帮助都非常感谢。

谢谢。

通过使用FromMember您可以将属性从源传递到ValueResolver。

你可以使用这样的东西:

 .ForMember(dest => dest.SomePropA, opt=> opt.ResolveUsing().FromMember(src => src.propA)) 

如果您未指定FromMember ,AutoMapper会将源传递给您的ValueResolver。