Как использовать AutoMpper для ViewModel со свойством IEnumerable <T> - PullRequest
4 голосов
/ 19 января 2011

Я пытаюсь следовать совету Джимми Богарда по автоматической фильтрации через actionfilter (который отлично работает в большинстве случаев). Но что, если у меня есть пользовательская модель представления со свойством коллекции, которое я хочу сопоставить? Например,

public class WidgetSearchViewModel
{
    public WidgetSearchOptionsViewModel Options { get; set; }
    public GenericListPagerViewModel Pager { get; set; }
    public IEnumerable<WidgetSearchResultModel> Results { get; set; }
}

Свойство Results приходит из репозитория в виде IEnumerable доменных сущностей, которые я хочу преобразовать в экземпляры WidgetSearchResultModel с помощью automapper. Проблема в том, что мне нужно будет создать WidgetSearchViewModel в контроллере, чтобы заполнить свойства Options и Pager. Как я могу использовать AutoMapper ActionFilter для заполнения свойства Results OnActionExecuted? Это вообще возможно, или мне нужно будет вызвать вызов Mapper.Map в контроллере и загрузить все сопоставления в моих модульных тестах?

1 Ответ

2 голосов
/ 19 января 2011

Automapper уже имеет встроенную поддержку для отображения между любым вложенным набором, который реализует IEnumerable.Если вы определите родительские и дочерние сопоставления свойств, то с помощьюpperpper будет отображаться хорошо вложенные коллекции.

Automapper также может обрабатывать сопоставление чего угодно с чем угодно, если вы реализуете CustomTypeConvertor: http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters&referringTitle=Home

...