문제

일부 물체를 자동 맵핑하려고합니다.
소스 객체에는 _ 이전 이름, 대상 개체가있는 속성이 있습니다. 하나의 맵 생성을 구현할 수 있습니까?
모든 소스 유형에 대해.

class MyMapper<TFrom, TTo>{
    TTo PerformMap(TFrom fromObject){
        Mapper.CreateMap<From, To>(); // ???
        TTo result = Mapper.Map<From, To>(fromObject);
        //result.Id.ShouldBe(value from TFrom._Id);
        return result;
    }
}

class From
{
    public int _Id { get; set; }
    public string _Name { get; set; }
}

class To
{
    public int Id { get; set; }
    public string Name { get; set; }
}
도움이 되었습니까?

해결책

최근에 Automapper에 추가 한 내용은 사용자 정의 명명 규칙에 도움이 될 수 있습니다. 트렁크 (R107)를 확인하면 inamingconvention을 둘러보십시오. 지금은 두 개의 이름 지정 규칙 (Pascalcase 및 Lower_case_underscore)이 있지만 실제로는 올바른 동정인을 알아내는 문제 일뿐입니다.

inamingconvention.cs

현재 이름 지정 규칙은 글로벌이며 프로파일 스코핑되었습니다. 이 기능은 새롭기 때문에 테스트 이외의 문서가 없습니다.

다른 팁

이것이 내가하는 방식입니다

Mapper.Initialize(cfg =>
        {
            cfg.RecognizeDestinationPrefixes(new []{"_"});
            cfg.RecognizePrefixes(new[] { "_" });

            cfg.CreateMap<To, From>().ReverseMap();
        });

이를 위해이 특정 사례를 해결하기 위해 사용자 정의 매핑을 추가 할 수 있습니다.

Mapper.CreateMap<From, To>()
   .ForMember( dest => dest.Id, opt => opt.MapFrom( src => src._Id ) )
   .ForMember( dest => dest.Name, opt => opt.MapFrom( src => src._Name ) );
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top