I tried to implement IValueResolver interface in the new version of AutoMapper. I have implemented ResourceTypeResolver class as follows..
public interface IValueResolver<in TSource, in TDestination, TDestMember>
{
TDestMember Resolve(TSource source, TDestination destination, TDestMember destMember, ResolutionContext context);
}
public class ResourceTypeResolver : IValueResolver<PMEasy.Model.Entity.Resource, PMEasy.Web.Models.Gantt.GanttResource, string>
{
private ILookupService LookupService;
public ResourceTypeResolver(ILookupService lookupService)
{
LookupService = lookupService;
}
public string Resolve(PMEasy.Model.Entity.Resource source, PMEasy.Web.Models.Gantt.GanttResource destination, string member, ResolutionContext context)
{
if (source.Type.HasValue && source.Type != Guid.Empty)
{
var resourceType = LookupService.GetLookupListByName("ResourceType").Where(con => con.GUID == source.Type.Value).FirstOrDefault();
return resourceType != null ? resourceType.Value : string.Empty;
}
else return "Work";
}
}
After I used this ResourceTypeResolver inside Mapper Configuration
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Resource, GanttResource>()
.ForMember(dst => dst.TypeName, opt => opt.ResolveUsing<ResourceTypeResolver>()));
}
Here I m getting an error in ResolveUsing context ,
Error 19 The type 'PMEasy.Web.AutoMapper.ResourceTypeResolver' cannot be used as type parameter 'TValueResolver' in the generic type or method 'AutoMapper.IMemberConfigurationExpression.ResolveUsing()'. There is no implicit reference conversion from 'PMEasy.Web.AutoMapper.ResourceTypeResolver' to 'AutoMapper.IValueResolver'. D:\PMEasy\Development\PMEasyDev\PMEasy.Web\App_Start\AutoMapperConfig.cs 58 59 PMEasy.Web
Any ideas how can we fixed this issue ?
It seems, that you create your own interface IValueResolver<in TSource, in TDestination, TDestMember>
, intsead of using automapper's one. Soo, remove your interface definition.