簡體   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