.NET 6의 C# Automapper

2902 단어
automapper는 한 객체 유형을 다른 객체 유형에 매핑하는 데 사용되는 간단한 라이브러리입니다. 라이브러리는 리플렉션 메커니즘을 사용하여 유형과 속성 이름을 동적으로 바인딩합니다. 이름과 유형에 따라 수동 매핑이 필요한 일부 속성이 있습니다.

시작하자
1단계: 라이브러리 설치
CLI를 사용하여 automapper 라이브러리를 .net 프로젝트에 추가하거나 너겟 패키지에서 추가할 수 있습니다.
CLI 명령:> dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection비주얼 스튜디오:> Install-package AutoMapper.Extensions.Microsoft.DependencyInjection
2단계: 구성(I)
.NET 5에서는 startup.cs 내에 Automapper를 추가할 수 있습니다. .NET 6에는 기본적으로 startup.cs 클래스가 없습니다. 이제 program.cs 클래스에 Automapper 라이브러리를 직접 추가할 수 있습니다.
스니펫 코드:

builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); 


3단계: 구성(II)
automapper 라이브러리의 Profile 클래스에서 상속하는 클래스를 작성하고 생성자에 구성을 포함해야 합니다.

 public class UserProfile:Profile
    {
       public UserProfile()
        {
         //source mapping to destination
            CreateMap<User, UserDTO>().ForMember(des=>des.UserId, opt=>opt.MapFrom(src=>src.Id));

       } 
    }




4단계:
코드 구현, 프로젝트는 program.cs 파일에서 작업을 시작한 다음 컨트롤러 클래스 전에 Automapper Profile이 상속되는 클래스로 이동합니다. 라이브러리의 IMapper 인터페이스가 컨트롤러 클래스에 주입되고 이를 필요로 하는 메서드에서 매핑이 수행됩니다.

  ("api/[controller]")]
    [ApiController]
    public class UserController : ControllerBase
    {
        private readonly IUserRepo _repository;
        private readonly  IMapper _mapper ;
        public UserController(IUserRepo repository, IMapper mapper)
        {
            _mapper = mapper;
            _repository = repository;
        }
        [HttpGet]
         public ActionResult<IEnumerable<UserDTO>>  GetAllUsers()
         {

          var userLists=_repository.GetAllUsers();
          //Mapping Here Source (User) to Destination
          return Ok(_mapper.Map<IEnumerable<UserDTO>>(userLists) );
          }
      }



주요 이점:
규칙을 사용하여 기본 매핑을 결정하므로 수동 매핑에 비해 작성해야 하는 코드의 양이 크게 줄어듭니다. 클래스의 속성이 일반적으로 정렬되면(유형 및 이름) 매핑 구성이 쉬워집니다.

미리 정의된 확장 방법(Reversed())을 사용하여 Automapper가 양방향으로 매핑되도록 구성할 수 있습니다.

 public class UserProfile:Profile
    {
       public UserProfile()
        {
         //source mapping to destination
            CreateMap<User, UserDTO>().ForMember(des=>des.UserId, opt=>opt.MapFrom(src=>src.Id)).ReverseMap();

       } 
    }



결론
Automapper는 한 클래스를 다른 클래스에 매핑하는 데 유용하고 직관적인 도구입니다. 코드 수를 줄이고 더 선명한 코드를 만듭니다.
자료가 도움이 되었기를 바랍니다. 향후 게시물에서 CQRS 패턴 및 마이크로 서비스를 포함한 고급 AutoMapper 주제를 다룰 예정입니다.
연결하자

좋은 웹페이지 즐겨찾기