Я использую 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);
Создайте универсальный картопостроитель списка:
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);