【问题标题】:AutoMapper IValueResolver throws error The type cannot be used as type parameter 'TValueResolver' in the generic type or methodAutoMapper IValueResolver 抛出错误类型不能用作泛型类型或方法中的类型参数“TValueResolver”
【发布时间】:2017-01-05 22:55:59
【问题描述】:

我尝试在新版本的 AutoMapper 中实现 IValueResolver 接口。 我已经实现了 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";
    }
}

我在 Mapper 配置中使用了这个 ResourceTypeResolver 之后

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

我在 ResolveUsing context 中遇到错误,

错误 19 类型“PMeasy.Web.AutoMapper.ResourceTypeResolver”不能用作泛型类型或方法“AutoMapper.IMemberConfigurationExpression.ResolveUsing()”中的类型参数“TValueResolver”。没有从“PMeasy.Web.AutoMapper.ResourceTypeResolver”到“AutoMapper.IValueResolver”的隐式引用转换。 D:\PMeasy\Development\PMEasyDev\PMEasy.Web\App_Start\AutoMapperConfig.cs 58 59 PMEasy.Web

有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: c# automapper automapper-5


    【解决方案1】:

    看来,您创建了自己的界面IValueResolver&lt;in TSource, in TDestination, TDestMember&gt;,而不是使用自动映射器的界面。所以,删除你的接口定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 2018-09-22
      • 1970-01-01
      相关资源
      最近更新 更多