Лучший способ использовать AutoMapper для сглаживания вложенных объектов?

Я сглаживаю объекты домена в DTO, как показано в примере ниже:

public class Root
{
    public string AParentProperty { get; set; }
    public Nested TheNestedClass { get; set; }
}

public class Nested
{
    public string ANestedProperty { get; set; }
}

public class Flattened
{
    public string AParentProperty { get; set; }
    public string ANestedProperty { get; set; }
}

// I put the equivalent of the following in a profile, configured at application start
// as suggested by others:

Mapper.CreateMap()
      .ForMember
       (
          dest => dest.ANestedProperty
          , opt => opt.MapFrom(src => src.TheNestedClass.ANestedProperty)
       );

// This is in my controller:
Flattened myFlattened = Mapper.Map(myRoot);

Я просмотрел несколько примеров, и пока что это способ сглаживания вложенной иерархии. Однако, если дочерний объект имеет несколько свойств, этот подход не сильно экономит код.

Я нашел этот пример:

http://consultingblogs.emc.com/owainwragg/archive/2010/12/22/automapper-mapping-from-multiple-objects.aspx

, но для этого требуются экземпляры сопоставленные объекты, требуемые функцией Map (), которая не будет работать с профилем, как я понимаю.

Я новичок в AutoMapper, поэтому хотел бы знать, есть ли лучший способ сделать это.

23
задан user20358 22 June 2015 в 10:24
поделиться