2012-08-08 4 views
2

내 개체를 올바르게 매핑하기 위해 ValueInjector를 가져 오는 데 문제가 있습니다. 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 

이 특성은 I가 전화 했어 인스턴스에서 두 개의 표준 개체를 포함 이것은 내가 매핑을 위해 사용하고있는 코드입니다. 문제는 내 카테고리에서 내 카테고리 DTO로 매핑 할 때입니다. 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를 사용하여 뭔가를 놓치고 있다고 확신합니다. 표준을 StandardDTO에 매핑하는 방법을 알려주는 선상에있는 것 같습니다. 이견있는 사람?

편집 : 나는이 http://valueinjecter.codeplex.com/wikipage?title=Automapper%20Simulation&referringTitle=Home

편집 2를 사용하고, 명확히해야 더 깊이 파고, 내 Iesi.Collections.HashedSet이 문제를 일으키는 것을 볼 수 있습니다. 범주의 표준 속성은 Iesi.Collections.ISet로 입력되며 HashedSet으로 바뀝니다. 그래서 내 진짜 질문은 그 유형에 대한 속성을 확인하고 어떻게 매핑 할 수 있습니까?

답변

2

내 생각에 Mapper.Map은 IEnumerable보다 한 레벨 더 깊은지도를 모르는 것입니다. 컬렉션을 반복하면서 카테고리, CategoryDTO 레벨, IEnumerable 레벨에 매핑 했습니까?

+0

이 길을 갈 필요까지 종료. 그것은 효과가 있었다. –