Преобразование одного исходного класса в несколько производных классов с помощью Autopper
Предположим, у меня есть исходный класс:
public class Source
{
//Several properties that can be mapped to DerivedBase and its subclasses
}
И некоторые целевые классы:
public class DestinationBase
{
//Several properties
}
public class DestinationDerived1 : DestinationBase
{
//Several properties
}
public class DestinationDerived2 : DestinationBase
{
//Several properties
}
Затем я хочу, чтобы производные целевые классы наследовали конфигурацию автоматического преобразователя базового класса, потому что я не хочу повторять это, есть ли способ достичь этого?
Mapper.CreateMap<Source, DestinationBase>()
.ForMember(...)
// Many more specific configurations that should not have to be repeated for the derived classes
.ForMember(...);
Mapper.CreateMap<Source, DestinationDerived1 >()
.ForMember(...);
Mapper.CreateMap<Source, DestinationDerived2 >()
.ForMember(...);
Когда я пишу это так, он вообще не использует базовые отображения, и, похоже, include не помогает мне.
Редактировать: это то, что я получаю:
public class Source
{
public string Test { get; set; }
public string Test2 { get; set; }
}
public class DestinationBase
{
public string Test3 { get; set; }
}
public class DestinationDerived1 : DestinationBase
{
public string Test4 { get; set; }
}
public class DestinationDerived2 : DestinationBase
{
public string Test5 { get; set; }
}
Mapper.CreateMap<Source, DestinationBase>()
.ForMember(d => d.Test3, e => e.MapFrom(s => s.Test))
.Include<Source, DestinationDerived1>()
.Include<Source, DestinationDerived2>();
Mapper.CreateMap<Source, DestinationDerived1>()
.ForMember(d => d.Test4, e => e.MapFrom(s => s.Test2));
Mapper.CreateMap<Source, DestinationDerived2>()
.ForMember(d => d.Test5, e => e.MapFrom(s => s.Test2));
AutoMapper.AutoMapperConfigurationException: были найдены несопоставленные элементы. Просмотрите типы и членов ниже.
Добавить пользовательское выражение сопоставления, игнорировать, добавить пользовательский преобразователь или изменить тип источника / назначенияИсточник -> DestinationDerived1 (Список участников назначения)Test3