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