ValueInjector不映射属性

时间:2012-08-08 19:58:11

标签: c# mapping valueinjecter

我在尝试使用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

此属性在我正在调用的实例中包含两个Standard对象。问题是当我从我的类别映射到我的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的内容,我可以看到它是null。我本来希望我的标准已经映射,但我确定我错过了ValueInjector的东西。可能就是告诉它如何将Standard映射到StandardDTO。有什么想法吗?

编辑:我需要澄清一下,我正在使用这个http://valueinjecter.codeplex.com/wikipage?title=Automapper%20Simulation&referringTitle=Home

编辑2:深入挖掘,我可以看到我的Iesi.Collections.HashedSet导致问题。 Categorys的Standards属性被输入为Iesi.Collections.ISet,它被转换为HashedSet。所以我想我真正的问题是如何检查该类型的属性以及如何映射?

1 个答案:

答案 0 :(得分:2)

我的猜测是Mapper.Map不知道比IEnumerable更深地映射一个级别。您是否尝试过循环集合,将其映射到Category,CategoryDTO级别和IEnumerable级别?