我正在使用ASP.NET MVC 3

有人可以帮我澄清一下这里发生的事情:

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

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

我的Index View 上有一个网格。每行都是CategoryViewModel的一个实例。因此,我要做的是获取所有类别的列表,然后将每个Category映射到CategoryViewModel,然后将此CategoryViewModels列表传递给 View 。侯我会做这样的映射吗?
IEnumerable<Category> categoryList = categoryService.GetAll();

我认为以下方法会起作用,但不会起作用:
// Mapping
IList<CategoryViewModel> viewModelList = new List<CategoryViewModel>();
viewModelList.InjectFrom(categoryList);

最佳答案

AFAIK值注入(inject)器不支持像AutoMapper这样的自动集合映射,但是您可以使用简单的LINQ表达式并对每个元素进行操作:

IEnumerable<Category> categoryList = categoryService.GetAll();
IList<CategoryViewModel> viewModelList = categoryList
    .Select(x => new CategoryViewModel().InjectFrom(x)).Cast<CategoryViewModel>()
    .ToList();

10-08 19:25