Я искал, как использовать Inheritance в AutoMapper, но я изо всех сил стараюсь полностью работать с Linq. Вот мой код:
Я определил свои отображения здесь:
CreateMap<Article, ArticleDetailsViewModel>()
.Include<Article, ArticleNewsItemDetailsViewModel();
CreateMap<Article, ArticleNewsItemDetailsViewModel>();
ArticleDetailsViewModel является базовым классом ArticleNewsItemDetailsViewModel.
Теперь вот проблема, если бы у меня было:
CreateMap<ArticleNewsItem, ArticleNewsItemDetailsViewModel>();
Все свойства в модели представления будут автоматически отображаться, потому что они имеют то же имя, что и их эквивалент объекта Linq. Однако, потому что я использую сопоставление Article => ArticleNewsItemDetailsViewModel, это невозможно, вместо этого я должен был бы определить каждый из них как:
.ForMember(x => x.Property1, opt => opt.MapFrom(src => src.ArticleNewsItem.Property1)
Я подумал о переносе всех свойств из ArticleNewsItemDetailsViewModel в новую модель представления и присвоении этому классу свойства внутри ArticleNewsItemDetailsViewModel и пока есть сопоставление между этими двумя объектами, тогда оно будет работать, но оно не работает, t чувствую себя очень чистым.
Есть ли способ избежать этого?