Я пытаюсь использовать IncludeBase. Кажется, что он имеет проблемы с одинаковыми именованными свойствами в базовых классах. Они не включены в базовое сопоставление, но автоматически разрешены. Я использую automapper версии 4.2.AutoMapper - IncludeBase с игнорированием такого же имени свойства
Ситуация похожа на это:
class Program
{
static void Main(string[] args)
{
MapperConfiguration conf = new MapperConfiguration((cfg) =>
{
cfg.CreateMap<FooBase, FooModelBase>()
.ForMember(e => e.Error, opt => opt.Ignore());
cfg.CreateMap<Foo, FooModel>()
.IncludeBase<FooBase, FooModelBase>();
});
IMapper mapper = conf.CreateMapper();
//works just fine
FooModelBase fooModelBase = mapper.Map<FooModelBase>(new FooBase());
//throws an exception
FooModel fooModel = mapper.Map<FooModel>(new Foo());
}
}
class FooBase
{
public string Error { get; set; }
}
class Foo : FooBase { }
class FooModelBase
{
public string Error
{
get { throw new NotImplementedException(); }
set { throw new NotImplementedException(); }
}
}
class FooModel : FooModelBase { }
Я ожидал, что приложение не бросает исключение, но это делает. Любой совет, как решить эту проблему?
Так что нет никакого другого способа сделать это, либо написать мое собственное включают расширение базы или явно добавить каждый игнорировать отображения из базового класса. Это довольно грустно. – eCorke
@eCorke: Да, они должны добавить способ определения такого поведения –