我一直在研究如何在中使用继承,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
,只要这两个对象之间存在映射,它就可以工作,但感觉不是很干净。
有什么办法可以避免这样做吗?