使用 Extension 方法建立漂亮的對映器類
我們可以用擴充套件方法建立一個更好的 mapper 類,假設我有一些類似的 DTO 類
public class UserDTO
{
public AddressDTO Address { get; set; }
}
public class AddressDTO
{
public string Name { get; set; }
}
我需要對映到相應的檢視模型類
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() .. and so on
};
}
public static AddressViewModel ToViewModel(this AddressDTO userAddr)
{
return userAddr == null ?
null :
new AddressViewModel()
{
Name = userAddr.Name
};
}
}
最後我可以像下面一樣呼叫我的對映器
UserDTO userDTOObj = new UserDTO() {
Address = new AddressDTO() {
Name = "Address of the user"
}
};
UserViewModel user = userDTOObj.ToViewModel(); // My DTO mapped to Viewmodel
這裡的美是所有的對映方法都有一個共同的名稱(ToViewModel),我們可以通過幾種方式重用它