我目前正在使用解析器将类别导航链接添加到我的基页模型中:
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()));
将处理程序移动到配置文件中,但这给了我一个堆栈溢出错误
答案 0 :(得分:0)
但是我不需要传递别名,因为我真的不需要 解析器的来源。这是正确的方法吗? 有一种解析器,我不需要传递参数吗?
使用自定义值解析器时,可以忽略传递参数。但您需要实施IValueResolver
而不是IMemberValueResolver
。
假设您仍然对实现IValueResolver
的类使用相同的名称,那么您可以使用它:
opt => opt.ResolveUsing<CategoryNavigationResolver>()