Automapper Resolver без источника - PullRequest
0 голосов
/ 04 мая 2018

В настоящее время я использую распознаватель для добавления навигационных ссылок по категориям в мою модель базовой страницы как таковую:

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

перемещение обработчика в профиль, но это дало мне ошибку переполнения стека

1 Ответ

0 голосов
/ 04 мая 2018

Однако мне не нужно передавать псевдоним, так как мне не нужен источник для резольвера. Это правильный способ сделать это или есть тип резольвера, где мне не нужно передавать аргумент?

Вы можете игнорировать передаваемые параметры при использовании пользовательских преобразователей значений. Но вам нужно реализовать IValueResolver вместо IMemberValueResolver.

Допустим, вы все еще используете то же имя для класса, реализующего IValueResolver, тогда вы можете просто использовать это:

opt => opt.ResolveUsing<CategoryNavigationResolver>()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...