我无法让 ValueInjector 正确映射我的对象。这是我用于映射的代码:
public IEnumerable<CategoryDTO> FindCategories(IList<object[]> criteria)
{
IEnumerable<Category> categories = _categoryRepo.Find(criteria);
IEnumerable<CategoryDTO> categoriesDto = Mapper.Map<IEnumerable<Category>, IEnumerable<CategoryDTO>>(categories);
return categoriesDto;
}
变量类别包含一个属性:
IEnumerable<Standard> Standards
在我调用的实例中,该属性包含两个标准对象。问题是当我从我的类别映射到我的 CategoryDTO 时。CategoryDTO 定义如下:
public class CategoryDTO : AuditableDTO
{
public Guid CategoryId { get; set; }
public string Name { get; set; }
public string MachineName { get; set; }
public string Description { get; set; }
public IEnumerable<StandardDTO> Standards { get; set; }
}
映射语句运行后,我调查了 categoriesDto.Standards 的内容,我可以看到它为空。我本来希望我的标准已经映射,但我确定我错过了 ValueInjector 的一些东西。可能类似于告诉它如何将 Standard 映射到 StandardDTO。有什么想法吗?
编辑:我需要澄清一下,我正在使用这个http://valueinjecter.codeplex.com/wikipage?title=Automapper%20Simulation&referringTitle=Home
编辑 2:深入挖掘,我可以看到我的 Iesi.Collections.HashedSet 导致了这个问题。Categorys 的 Standards 属性类型为 Iesi.Collections.ISet,这变成了 HashedSet。所以我想我真正的问题是如何检查该类型的属性以及如何映射?