Automapper и доступ к переменным-членам - PullRequest
1 голос
/ 29 ноября 2010

У меня есть контроллер mvc, в который вставлен вспомогательный класс.Я хотел бы преобразовать из viewmodel в dto с помощью automapper.большинство свойств являются простыми отображениями, но одно включает вызов вспомогательного класса с параметром из модели представления.В идеале я хотел бы сделать что-то вроде этого:

Mapper.CreateMap<TheViewModel, TheDto>()
                .ForMember(dest => dest.Url, o => o.MapFrom(src => _urlHelper.GenerateUrlFromUsername(src.Username)));

... но я не могу, потому что я не могу получить доступ к нестатическому полю.

Каков наилучший подход?

РЕДАКТИРОВАТЬ:

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

public class CustomResolver : ValueResolver<TheViewModel, string>
{
    private readonly IUrlHelper _urlHelper;

    public CustomResolver(IUrlHelper urlHelper)
    {
        _urlHelper = urlHelper;
    }
    protected override string ResolveCore(TheViewModel source)
    {
        return _urlHelper.GenerateUrlFromUsername(source.Username);
    }
}

1 Ответ

4 голосов
/ 29 ноября 2010

Используйте собственный распознаватель в этом случае:

http://automapper.codeplex.com/wikipage?title=Custom%20Value%20Resolvers

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...