Как сопоставить списки с помощью ValueInjector

Я использую ASP.NET MVC 3 .

Кто-нибудь, пожалуйста, помогите мне прояснить, что здесь происходит:

var person = new PersonRepository().Get();

var personViewModel = new PersonViewModel();
personViewModel.InjectFrom<LoopValueInjection>(person)
     .InjectFrom<CountryToLookup>(person);

У меня есть сетка в моем представлении Index . Каждая строка является экземпляром CategoryViewModel . Итак, что я делаю, это получаю список всех категорий и затем сопоставляю каждую Category с CategoryViewModel, а затем передаю этот список CategoryViewModels в представление. Могу я сделать такое сопоставление?

IEnumerable<Category> categoryList = categoryService.GetAll();

Я думал, что следующее сработает, но это не так:

// Mapping
IList<CategoryViewModel> viewModelList = new List<CategoryViewModel>();
viewModelList.InjectFrom(categoryList);
25
задан Brendan Vogt 24 October 2011 в 07:21
поделиться

1 ответ

Создайте универсальный картопостроитель списка:

public class ValueMapper
{
     public static TResult Map<TResult>(object item) where TResult : class
    {
        return item == null ? null : Mapper.Map<TResult>(item);
    }

    public static IEnumerable<TResult> MapList<TResult>(IEnumerable<object> items) where TResult : class
    {
        return items?.Select(i => Mapper.Map<TResult>(i));
    }
}

Теперь можно сослаться на класс ValueMapper везде, где Вы хотите и звоните и Map и MapList

var mydtos = ValueMapper.MapList<MyDto>(dtos);
var mydto = ValueMapper.Map<MyDto>(dto);
0
ответ дан 28 November 2019 в 18:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: