.NET 6의 C# 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 주제를 다룰 예정입니다.
연결하자
Reference
이 문제에 관하여(.NET 6의 C# Automapper), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sensationalkunlex/c-automapper-in-net-6-51jh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)