AutoMapper IValueResolver генерирует ошибку Тип не может использоваться в качестве параметра типа 'TValueResolver' в универсальном типе или методе

Я попытался реализовать интерфейс IValueResolver в новой версии AutoMapper. Я реализовал класс ResourceTypeResolver следующим образом.

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";
    }
}

После того, как я использовал этот ResourceTypeResolver внутри Конфигурации Mapper

var config = new MapperConfiguration(cfg =>
        {
        cfg.CreateMap<Resource, GanttResource>()
               .ForMember(dst => dst.TypeName, opt => opt.ResolveUsing<ResourceTypeResolver>()));
        } 

Здесь я получаю сообщение об ошибке в контексте ResolveUsing,

Ошибка 19 Тип "PMEasy.Web.AutoMapper.ResourceTypeResolver" нельзя использовать в качестве параметра типа "TValueResolver" в универсальном типе или методе "AutoMapper.IMemberConfigurationExpression.ResolveUsing()". Не существует неявного преобразования ссылок из PMEasy.Web.AutoMapper.ResourceTypeResolver в AutoMapper.IValueResolver. D:\PMEasy\Development\PMEasyDev\PMEasy.Web\App_Start\AutoMapperConfig.cs 58 59 PMEasy.Web

Любые идеи, как мы можем исправить эту проблему?

1 ответ

Решение

Кажется, что вы создаете свой собственный интерфейс IValueResolver<in TSource, in TDestination, TDestMember>вместо использования автомата. Так, удалите определение вашего интерфейса.

Другие вопросы по тегам