Automapper Resolver无源

时间:2018-05-04 09:48:21

标签: c# automapper

我目前正在使用解析器将类别导航链接添加到我的基页模型中:

public sealed class CategoryNavigationResolver : IMemberValueResolver<object, object, string, ICollection<ProductCategoryModel>>
{
    public ICollection<ProductCategoryModel> Resolve(object source, object destination, string sourceMember, ICollection<ProductCategoryModel> destMember, ResolutionContext context)
    {
        IProductCategoryHandler productCategoryHandler = DependencyResolver.Current.GetService<IProductCategoryHandler>();
        return productCategoryHandler.GetCategoryNavigation();
    }
}

和映射:

CreateMap<BasePage, BasePageModel>()
    .IncludeBase<BaseEntity, BaseModel>()
    .ForMember(dest => dest.ProductCategoryLinks, opt => opt.ResolveUsing<CategoryNavigationResolver, string>(src => src.Alias));

但是我不需要传递别名,因为我真的不需要解析器的来源。这是正确的方法吗?还是有一种解析器,我不需要传递参数?

我尝试过使用

            .ForMember(dest => dest.ProductCategoryLinks, opt => opt.UseValue(productCategoryHandler.GetCategoryNavigation()));

将处理程序移动到配置文件中,但这给了我一个堆栈溢出错误

1 个答案:

答案 0 :(得分:0)

  

但是我不需要传递别名,因为我真的不需要   解析器的来源。这是正确的方法吗?   有一种解析器,我不需要传递参数吗?

使用自定义值解析器时,可以忽略传递参数。但您需要实施IValueResolver而不是IMemberValueResolver

假设您仍然对实现IValueResolver的类使用相同的名称,那么您可以使用它:

opt => opt.ResolveUsing<CategoryNavigationResolver>()