2011-08-25 4 views
1

멤버 무시와 함께 AutoMapper가 제대로 작동하지 않는 상황이 있습니다. 다음은 클래스 구조와 매핑입니다.AutoMapper는 중첩 형식을 무시하지 않습니다.

public class Class1 { 
     public Class2 Class2 { get; set; } 
} 

public class Class2 { 
    public List<Class3> class3List { get; set; } 
} 

Mapper.CreateMap<Class1, Class1>(); 
Mapper.CreateMap<Class2, Class2> 
    .ForMember(dest => dest.class3List, opt => opt.Ignore()); 
Mapper.CreateMap<Class3, Class3>(); 

그리고 클래스 1은 객체입니다 class3List가 비어있는 2에서

Mapper.Map<Class1, Class1>(object1, object2); 

을 CLASS1에 매핑하지만 매핑하기 전에 항목을했을 때. 이런 식으로 매핑하면됩니다.

Mapper.CreateMap<Class1, Class1>(); 
    .ForMember(dest => dest.Class2, opt => opt.Ignore()); 
Mapper.CreateMap<Class2, Class2>(); 
Mapper.CreateMap<Class3, Class3>(); 

클래스 2 속성을 무시합니다. Class1을 Class1에 매핑 할 때 class3List를 무시하고 비우지 않으려면 어떻게해야합니까?

답변

1

일반적으로 매핑은 한 유형의 클래스에서 다른 유형의 클래스로 수행됩니다. 여기서 무엇을 이루려고합니까? 클론?

API를 살펴보면 Ignore 대신 UseDestinationValue()를 사용하는 것이 가장 좋습니다. 난 당신의 코드로 그것을 테스트하고 didnt은 여전히 ​​작동하는 것.

Mapper.CreateMap<ParentFoo, ParentBar>() 
    .ForMember(b => b.Child, o => o.UseDestinationValue()); 
+0

UseDestinationValue가 내 문제의 해결책이었습니다. 나는 다른 방식으로이 문제를 해결했습니다.) – TuomasK

관련 문제