Только за вчера я отправил это:Automapper - Наследование картографа не работает с Конструкцией
Automapper - Inheritance mapper not working with type converter
Теперь я пытаюсь делать то, что @ сказал отмычка-Богард в своем ответе, но, к сожалению, до сих пор не имели успеха. Базовые элементы не отображаются.
Джимми сказал:
Однако, вы можете использовать ConstructUsing пристроить исходный объект назначения. Или пользовательский AfterMap, который также унаследован. Просто не конвертируется.
Вот мой новый код.
/* BaseClassConstructor.cs */
public class BaseClassConstructor {
public static BaseClass Construct(ResolutionContext context) {
if (context == null || context.IsSourceValueNull)
return null;
var src = (SourceClass)context.SourceValue;
return new BaseClass() {
CommonAttr = src.SourceAttr
};
}
}
/* AutoMapperConfig.cs */
public static class AutoMapperConfig {
public static void RegisterMappings() {
AutoMapper.Mapper.Initialize(config => {
config
.CreateMap<SourceClass, BaseClass>()
.Include<SourceClass, DerivedClass1>()
.Include<SourceClass, DerivedClass2>()
.ConstructUsing(s => BaseClassConstructor.Construct(s));
config
.CreateMap<SourceClass, DerivedClass1>()
.ForMember(dest => dest.Dummy, o => o.MapFrom(src => src.SourceAttr2))
.IncludeBase<SourceClass, BaseClass>();
});
}
}
Я что-то пропустил? Я использую ConstructUsing правильный путь?
Любая помощь будет оценена по достоинству.
Чего вы хотите достичь? Создание Mapper.Map (источник) работает? –
Evk
Да! @Evk. При корректном отображении всех базовых атрибутов. – arosgab
И вам нужно использовать конвертер типов? Потому что в вашем примере вам это действительно не нужно. – Evk