自动映射:使用自定义解析程序返回的结构
使用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。