Automapper 3.2.1 The call is ambiguous between the following methods or properties

less than 1 minute read

Quick error fix for anyone experiencing the same issue, looks like the syntax for ResolveUsing has changed as of 3.2.0.

Just updated Automapper on my project to 3.2.1. And getting 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 sees other people with the same issue

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

So there is 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());  
  1. 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());  

Updated:

Comments