Предположим следующую иерархию объектов:
class Customer
{
int Id { get; set; }
string Name { get; set; }
}
class CustomerStubDTO
{
int Id { get; set; }
}
class CustomerDTO : CustomerStubDTO
{
string Name { get; set; }
}
class Order
{
Customer Customer { get; set; }
}
class OrderDTO
{
CustomerStubDTO Customer { get; set; }
}
И следующее отображение:
CreateMap<Order, OrderDTO>();
CreateMap<Customer, CustomerDTO>();
Это не работает, AutoMapper вместо этого хочет отображение, подобное следующему:
CreateMap<Customer, CustomerStubDTO>();
Но я хочу, чтобы OrderDTO.Customer
содержал экземпляр CustomerDTO, поэтому у меня есть доступ к свойству Name
, среди прочего.
Я смог использовать .Include<TSource, TDestination>
для этого поведения, когда у исходного класса есть другие производные, но не когда он сам по себе.(например, если существует CustomerStub, соответствующий CustomerStubDTO, и Customer, соответствующий CustomerDTO)
Что это означает, что следующее также не работает:
CreateMap<Customer, CustomerStubDTO>().Include<Customer, CustomerDTO>();
Есть идеи?