Я сглаживаю объекты домена в 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);
Я просмотрел несколько примеров, и пока что это способ сглаживания вложенной иерархии. Однако, если дочерний объект имеет несколько свойств, этот подход не сильно экономит код.
Я нашел этот пример:
, но для этого требуются экземпляры сопоставленные объекты, требуемые функцией Map (), которая не будет работать с профилем, как я понимаю.
Я новичок в AutoMapper, поэтому хотел бы знать, есть ли лучший способ сделать это.