2015-01-02 5 views
0
Class SourceClass 
{ 
    string name {get;set;} 
    IList<TypeA> typeAList {get;set;} 
} 
Class DestinationClass 
{ 
    string name {get;set;} 
    IList<TypeB> typeBList {get;set;} 
} 

automapper를 사용하여이 두 클래스를 매핑하는 방법은 무엇입니까?목록이있는 클래스에서 Automapper로 변환 <typeA> 목록이있는 클래스 <typeB>

시도 1 : -이에 대한 런타임 변환 오류를 얻고있다 Mapper.CreateMap<SourceClass, DestinationClass>().ForMember(d => d.typeBList, s => s.MapFrom(x => x.typeAList.Select(a => new typeB() { prop1 = a.prop1, prop2 = a.prop2 }).ToList<typeB>()));

.

시도 2 ​​: - Mapper.CreateMap<typeB,typeA>().ForMember(d=>d.prop1,opt=>opt.MapFrom(s=>s.prop1)); Mapper.CreateMap<SourceClass, DestinationClass>().ForMember(d => d.typeBList, s => s.MapFrom(x => x.typeAList));

오류 : - 누락 형태 맵 구성이나 지원되지 않는 매핑.

매핑 유형 : 이 TYPEA -> b를 입력

TYPEA -> b를 입력

대상 경로 : typeB.typeB0 [0]

소스 값 : TYPEA

+0

또한 'TypeA'및 'TypeB'에 대한지도를 만들어야합니다. 마찬가지로's.MapFrom (x => x.typeAList.Select (a => 새로운 typeB() {prop1 = a.prop1, prop2 = a.prop2})' – Satpal

+0

'covertusing 메서드? – Dhinesh

답변

0

당신이 사용 할 수 있습니다 자동 매퍼에 대한 다음 코드는

Mapper.CreateMap<SourceClass ,DestinationClass>(); 
자동

Mapper.CreateMap<SourceClass, DestinationClass>(); 
Mapper.CreateMap<TypeA, TypeB>(); 

AutoMapper지도 수집 유형,하지만 당신은 모든 요소 유형에 대한지도를 작성해야합니다 있도록 각 요소는 개별적으로 매핑됩니다 :

+0

하지만 자동 매퍼가 typeAList와 typeBList 사이의 형식 불일치를 처리하는 방법 오류가 발생합니다 – Dhinesh

+0

두 클래스가 동일한 변수 이름이어야하므로 plz 클래스 변수 이름을 변경하십시오. – Dane

+0

변수 이름이 아니라 typallist가 사용자 지정 목록입니다. TypeA 및 typeBList는 사용자 정의 유형 typeB의 목록입니다.이 둘을 모두 매핑하려고합니다. – Dhinesh

0

당신은 상단 두 가지 유형과 목록 요소의 형식을 매핑해야합니다.