2011-05-12 3 views
0

나는 과거에 매핑 목록을 위해 automapper를 사용했습니다. 왜냐하면 어떤 이유로이 경우 작동하지 않기 때문입니다.AutoMapper가 간단한 목록을 매핑하지 못했습니다.

 public class MyType1 { 
      public int Id { get; set; } 
      public string Description { get; set; } 
     } 


     public class MyType2 { 
      public int Id { get; set; } 
      public string Description { get; set; } 
     } 

    public void DoTheMap() { 
       Mapper.CreateMap<MyType2, MyType1>(); 
       Mapper.AssertConfigurationIsValid(); 

       var theDto1 = new MyType2() { Id = 1, Description = "desc" }; 
       var theDto2 = new MyType2() { Id = 2, Description = "desc2" }; 
       List<MyType2> type2List = new List<MyType2> { theDto1, theDto2 }; 

       List<MyType1> type1List = Mapper.DynamicMap<List<MyType1>>(type2List); 
    //FAILURE. NO EXCEPTION, BUT ZERO VALUES 

       List<MyType1> type1List2 =type2List.Select(Mapper.DynamicMap<MyType1>).ToList(); 
    //SUCCESS, WITH LINQ SELECT 
     } 

답변

2

변경이 : 여기에

Mapper.DynamicMap<List<MyType1>>(type2List) 

: - 익명 형식과 같은 것들에 대한

Mapper.Map<List<MyType1>, List<MyType2>>(type2List); 

DynamicMap는 컴파일 타임에 유형을 모르는 경우에만입니다.

+0

감사합니다. 지미. 하지만이 상황에서 동적지도가 작동하지 않는 이유를 잘 모릅니다. 확실하게 전달 된 값에서 유형을 추론하여 명시된 유형으로 매핑해야합니다. 그것은 맵핑되는 타입을 명시해야하는 불필요한 것으로 보인다. – JAG

+0

런타임 유형이 컴파일 타임 유형과 다른 경우가 아니면. 이 문제를 해결하기위한 요청이 있지만 아직 기존 방법과 충돌하지 않도록 세부 정보를 준비하고 있습니다. https://github.com/jbogard/AutoMapper/pull/17 –

관련 문제