繁体   English   中英

没有源代码的Automapper解析器

[英]Automapper Resolver without source

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

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()));

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

但是,我不需要传递别名,因为我确实不需要解析器的源。 这是执行此操作的正确方法,还是我不需要传递参数的解析器类型?

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

假设您仍对实现IValueResolver的类使用相同的名称,则可以使用以下名称:

opt => opt.ResolveUsing<CategoryNavigationResolver>()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM