С учетом следующих источников:
public class SourceBase { public string TheString { get; set; } }
public class SourceDerived : SourceBase { }
и направления:
public class DestBase { public string MyString { get; set; } }
public class DestDerived : DestBase { }
И это отображение:
CreateMap<SourceBase, DestBase>()
.ForMember(dest => dest.MyString, o => o.MapFrom(x => x.TheString))
.Include<SourceDerived, DestDerived>();
CreateMap<SourceDerived, DestDerived>();
Mapper.AssertConfigurationIsValid(); // Exception is thrown here
Тем не менее, это приводит к ошибке сопоставления, когда MyString не сопоставляется с DestDerived. Что дает? Мне действительно нужно повторять сопоставления для свойств базового класса во всех производных типах (у меня есть более одного подкласса в моем реальном коде).
EDIT:
Точное исключение: Следующие 1 свойства в DestDerived не могут быть сопоставлены: MyString. Добавьте пользовательское выражение сопоставления, игнорируйте или переименуйте свойство в DestDerived .