번역/C# Notes for Professionals
48.15: 확장 메소드를 사용하여 편리한 mapper 클래스 만들기
노초코
2022. 12. 1. 22:59
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/
반응형