Looking for c# Keywords? Try Ask4Keywords

C# Language Использование методов расширения для создания красивых классов сопоставления


пример

Мы можем создать лучшие классы карт с методами расширения. Предположим, что у меня есть некоторые классы 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), и мы можем использовать его несколькими способами