[英]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.