65.9K
CodeProject is changing. Read more.
Home

Automapper 3.2.1 The Call is Ambiguous Between the Following Methods or Properties

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Feb 12, 2020

CPOL
viewsIcon

5757

A fix for people experiencing the same issue with AutoMapper 3.2.1

Just updated Automapper on my project to 3.2.1. And I got the following error:

The call is ambiguous between the following methods or properties ‘AutoMapper.IMemberConfigurationExpression.ResolveUsing (System.Func<MYASSEMBLY.MYCLASS1,object>)’ and ‘AutoMapper.IMemberConfigurationExpression.ResolveUsing (System.Func<AutoMapper.ResolutionResult,object>)’
Mapper.CreateMap<TaskCreated, Task>()  
.ForMember(x => x.Created, x => x.ResolveUsing(t => DateTime.UtcNow))  
.ForMember(x => x.Modified, x => x.ResolveUsing(t => DateTime.UtcNow))  
.ForMember(x => x.Deleted, x => x.Ignore());  

A quick search finds other people with the same issue.

So there are 2 options.

  1. Use MapFrom:
    Mapper.CreateMap<TaskCreated, Task>()
    .ForMember(x => x.Created, x => x.MapFrom(t => DateTime.UtcNow))
    .ForMember(x => x.Modified, x => x.MapFrom(t => DateTime.UtcNow))
    .ForMember(x => x.Deleted, x => x.Ignore());
  2. Explicitly tell Automapper what object I’m using in the lambda:
    Mapper.CreateMap<TaskCreated, Task>()  
    .ForMember(x => x.Created, x => x.ResolveUsing((TaskCreated t) => DateTime.UtcNow))  
    .ForMember(x => x.Modified, x => x.ResolveUsing((TaskCreated t) => DateTime.UtcNow))
    .ForMember(x => x.Deleted, x => x.Ignore());