Я искал, как использовать 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 чувствую себя очень чистым.
Есть ли способ избежать этого?