Automapper: Using the structure returned by a custom resolver

ⅰ亾dé卋堺 提交于 2019-12-19 08:53:21

问题


With AutoMapper, I am using a ValueResolver that returns a structure like this

struct MyStruct
{
        public int propA;
        public int propB;
        public int propC;
}

class MyResolver : ValueResolver<MyViewModel, MyStruct>
{ 
     protected override MyStruct ResolveCore(MyViewModel source)
     {
      ....return MyStruct data
     }
}

I returned a structure because the mapping rules are quite complex and I could not write a custom resolver for each properties as they are related to each other.

So my idea was to do this in one resolver that return a structure and use itike this

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

Unfortunately, this does not work.

It looks like src.ResolveUsing<MyResolver>() is not returning a structure

Any help is more than appreciated.

Thanks.


回答1:


By using FromMember you can pass a property from the source to your ValueResolver.

You can use something like this:

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

If you don't specify FromMember, AutoMapper will pass the source to your ValueResolver.



来源:https://stackoverflow.com/questions/5368525/automapper-using-the-structure-returned-by-a-custom-resolver

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!