Using Extension methods to create beautiful C# with Example
mapper classes We can create a better mapper classes with extension methods, Suppose if i have some DTO classes like public class UserDTO { public AddressDTO Address { get; set; } } public class AddressDTO { public string Name { get; set; } } and i need to map to corresponding view model classes public class UserViewModel { public AddressViewModel Address { get; set; } } public class AddressViewModel { public string Name { get; set; } } then I can create my mapper class like below 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 }; } } Then finally i can invoke my mapper like below UserDTO userDTOObj = new UserDTO() { Address = new AddressDTO() { Name = "Address of the user" } }; UserViewModel user = userDTOObj.ToViewModel(); // My DTO mapped to Viewmodel The beauty here is all the mapping method have a common name (ToViewModel) and we can reuse it several ways