Section 48.15: 확장 메소드를 사용하여 편리한 mapper 클래스 만들기

확장 (extension) 메소드를 이용하면, 보다 편리한 mapper 클래스를 만들 수 있다. 다음과 같은 DTO 클래스들이 존재하는 경우를 생각해보자.

public class UserDTO { public AddressDTO Address { get; set; } } public class AddressDTO { public string Name { get; set; } }

이제 각 클래스들을 아래와 같이 대응되는 view model 클래스들로 매핑시켜야 한다.

public class UserViewModel { public AddressViewModel Address { get; set; } } public class AddressViewModel { public string Name { get; set; } }

이러한 경우, 아래와 같은 mapper 클래스를 정의할 수 있다.

public static class ViewModelMapper { public static UserViewModel ToViewModel(this UserDTO user) { return user == null ? null : new UserViewModel() { Address = user.Address.ToViewModel() // Job = user.Job.ToViewModel(), // Contact = user.Contact.ToViewModel() .. 기타 등등 }; } public static AddressViewModel ToViewModel(this AddressDTO userAddr) { return userAddr == null ? null : new AddressViewModel() { Name = userAddr.Name }; } }

이제, 위에서 정의한 mapper 를 다음과 같이 호출할 수 있다.

UserDTO userDTOObj = new UserDTO() { Address = new AddressDTO() { Name = "Address of the user" } }; UserViewModel user = userDTOObj.ToViewModel(); // DTO 클래스를 Viewmodel 에 매핑시킨다

이 방식의 장점은, 모든 매핑 메소드들은 공통된 이름 (ToViewModel) 을 갖게 될 것이며 이는 다양한 방법으로 재사용될 수 있을 것이다.

본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts